私は自分のローカルマシンにMySQL Community Edition 5.5をインストールしましたが、外部から接続できるようにリモート接続を許可したいです。
どうやってやるの?
これはMySQLではデフォルトで許可されています。
デフォルトで無効になっているのはリモートroot
アクセスです。それを有効にしたい場合は、このSQLコマンドをローカルで実行してください。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
そして、次の行を見つけて、 コメントアウトしてください あなたのmy.cnf
ファイルで、通常Unix/OSXシステムの/etc/mysql/my.cnf
にあります。場合によっては、ファイルの場所は/etc/mysql/mysql.conf.d/mysqld.cnfです。
Windowsシステムの場合は、MySQLのインストールディレクトリにあります。通常はC:\Program Files\MySQL\MySQL Server 5.5\
のような名前で、ファイル名はmy.ini
になります。
行を変更
bind-address = 127.0.0.1
に
#bind-address = 127.0.0.1
上記のすべてを実行した後、私はまだroot
としてリモートでログインすることはできませんでしたが、ポート3306
にTelnet接続すると、MySQL
が接続を受け入れていることが確認されました。
私はMySQLのユーザーを調べ始めたところ、 複数のrootユーザー 異なるパスワードを持つユーザーがいることに気付きました。
select user, Host, password from mysql.user;
それでMySQL
で私は rootのすべてのパスワードを設定します 再び私はroot
としてリモートでログインすることができました。
use mysql;
update user set password=PASSWORD("NEWPASSWORD") where User='root';
flush privileges;
私の経験からのメモですが、このパスの下に設定ファイルがあります/etc/mysql/mysql.conf.d/mysqld.cnf
。
(私はこの道を見つけるためにしばらくの間苦労した)
私の場合、私はセントOS上のリモートMySQLサーバーに接続しようとしていました。多くの解決策(すべての特権の付与、ipバインディングの削除、ネットワーキングの有効化)を経ても、問題は解決しませんでした。
結局、さまざまな解決策を調べていると、iptablesに出くわしたので、MySQLポート3306が接続を受け入れていないことに気付きました。
これが私がこの問題をどのように確認し解決したかについての小さなメモです。
telnet(MySQLサーバのIP)[portNo]
iptables -A入力-i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
サービスiptables停止
お役に立てれば。
MySQLユーザーにワイルドカードリモートアクセスを設定するには、以下の手順に従ってください。
(1)cmdを開きます。
(2)パスC:¥Program Files¥MySQL¥MySQL Server 5.X¥binに移動して、このコマンドを実行します。
mysql -u root -p
(3)rootのパスワードを入力してください。
(4)以下のコマンドを実行して許可を与えます。
*。*のすべての特権を 'PASSWORD'で識別される 'USERNAME' @ 'IP'に付与します。
USERNAME:MySQLサーバーに接続したいユーザー名。
IP:MySQLサーバーへのアクセスを許可したい場所からのパブリックIPアドレス。
PASSWORD:使用されているユーザー名のパスワード。
ユーザーが任意のIPアドレスから接続できるように、IPを%に置き換えることができます。
(5)コマンドに従ってprevilegesをフラッシュして終了する。
FLUSH PRIVILEGES;
終了します。 または \q
brew
からMySQLをインストールしたのであれば、デフォルトではローカルインターフェースのみを監視します。これを修正するには、/usr/local/etc/my.cnf
を編集し、bind-address
を127.0.0.1
から*
に変更する必要があります。
それからbrew services restart mysql
を実行してください。
MySQLサーバープロセスが127.0.0.1または:: 1でのみ待機している場合は、リモートで接続することはできません。 bind-address
に/etc/my.cnf
設定がある場合、これが問題の原因である可能性があります。
また、localhost
以外のユーザーにも特権を追加する必要があります。
ファイアウォールサービスが実行されている場合は、ファイアウォールポート3306が開いていることを確認してください。
ちょっと私は何時間もこの問題で私の髪を引き抜いた..ついに私はホスティングプロバイダを呼び出し、1と1のコントロールパネルで彼らはポートを複製して追加する必要があることをクラウドサーバーを使用して3306追加されたら私はまっすぐになった..
このブログ ローカルエリアネットワーク上でMySQLサーバーを設定する方法 最初からMySQL
を設定するのに役立ちます
mysqld
に bind address がループバック/ローカルアドレス(例:127.0.0.1
)に設定されている場合、ループバックインタフェースにはどのリモートホストからもアクセスできないため、サーバーはリモートホストから到達できません。
任意のホストからの接続を受け付ける場合はこのオプションを0.0.0.0
(IPv4 + 6の場合は::
)に設定します。1つのインターフェースでのみ接続を許可する場合は、外部から到達可能な別のアドレスに設定します。
そしてOS Xの人々にとって、bind-addressパラメータは通常my.iniファイルではなくlaunchd plistで設定されることを知っています。そこで私の場合は、<string>--bind-address=127.0.0.1</string>
から/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
を削除しました。