ローカル マシンに MySQL Community Edition 5.5 をインストールしました。外部ソースから接続できるようにリモート接続を許可したいと考えています。
どうやってやるの?
ローカル マシンに MySQL Community Edition 5.5 をインストールしました。外部ソースから接続できるようにリモート接続を許可したいと考えています。
どうやってやるの?
これは、MySQL ではデフォルトで許可されています。
デフォルトで無効になっているのは、リモートroot
アクセスです。これを有効にする場合は、次の SQL コマンドをローカルで実行します。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
次に、次の行を見つけてファイル内でコメントアウトしますmy.cnf
。これは通常、/etc/mysql/my.cnf
Unix/OSX システムに存在します。場合によっては、ファイルの場所は /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
たが、ポートに Telnet で接続すると、接続が受け入れ3306
られていることが確認されました。MySQL
MySQL のユーザーを調べ始めたところ、異なるパスワードを持つ複数の root ユーザーが存在することに気付きました。
select user, host, password from mysql.user;
そのため、ルートのすべてのパスワードを再度設定し、MySQL
最終的に としてリモートでログインできました。root
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
私の場合、cent OS 上のリモート mysql サーバーに接続しようとしていました。多くの解決策 (すべての権限の付与、IP バインディングの削除、ネットワークの有効化) を行った後でも、問題は解決されませんでした。
結局のところ、さまざまな解決策を調べているときに、iptables に出くわし、mysql ポート 3306 が接続を受け入れていないことに気付きました。
この問題をどのように確認して解決したかについての小さなメモを次に示します。
telnet (mysql サーバーの IP) [ポート番号]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
サービス iptables 停止
お役に立てれば。
MySQL サーバー プロセスが 127.0.0.1 または ::1 のみをリッスンしている場合、リモート接続することはできません。bind-address
これに設定がある場合/etc/my.cnf
は、問題の原因である可能性があります。
localhost
非ユーザーの特権も追加する必要があります。
必要な場合は、ファイアウォール サービスが実行されている場合は、ファイアウォール ポート 3306 も開いていることを確認してください。