MySql へのリモート アクセスに問題があります。ここから
まず、ssh 経由でリモートの MySQL データベース サーバーにログインします。
接続したら、vi などのテキスト エディタを使用して mysql 構成ファイル my.cfg を編集する必要があります。
Debian Linux ファイルは次の場所にあります。/etc/mysql/my.cnf
# vi /etc/my.cnf
- ステップ # 3: ファイルが開いたら、[mysqld] と表示されている行を見つけます。
行 skip-networking がコメント化されていることを確認 (または行を削除) し、次の行を追加します。
bind-address=YOUR-SERVER-IP
たとえば、MySQL サーバーの IP が 172.20.5.2 の場合、ブロック全体は次のようになります。
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/English
bind-address = 172.20.5.2
# skip-networking
....
..
....
- bind-address : バインド先の IP アドレス。- skip-networking : TCP/IP 接続をまったくリッスンしません。mysqld とのすべてのやり取りは、Unix ソケット経由で行う必要があります。このオプションは、ローカル リクエストのみが許可されているシステムに強くお勧めします。リモート接続を許可する必要があるため、この行をファイルから削除するか、コメント状態にする必要があります。
mysql サービスを再起動して、変更を有効にします
# /etc/init.d/mysql restart
新しいデータベースへのアクセスを許可する
ユーザー bar とリモート IP 162.54.10.20 に foo という名前の新しいデータベースを追加する場合は、mysql> プロンプトで次のコマンドを入力する必要があります。
mysql> CREATE DATABASE foo;
mysql> GRANT ALL ON foo.* TO bar@'162.54.10.20' IDENTIFIED BY 'PASSWORD';
既存のデータベースへのアクセスを許可する
ユーザー webadmin の webdb というデータベースに対して 162.54.10.20 というリモート IP から常に接続していると仮定すると、この IP アドレスへのアクセスを許可する必要があります。mysql> プロンプトで、既存のデータベースに対して次のコマンドを入力します。
mysql> update db set Host='162.54.10.20' where Db='webdb';
mysql> update user set Host='162.54.10.20' where user='webadmin';
exit コマンドを入力して、mysql をログアウトします。
mysql> exit
リモート システム タイプ コマンドから
$ mysql -u webadmin –h 172.20.5.2 –p
テスト目的で telnet を使用してポート 3306 に接続することもできます。
$ telnet 172.20.5.2 3306