通常、MySQLデータベースサーバーへのリモートアクセスは、セキュリティ上の理由から無効になっています。ただし、自宅またはWebサーバーからMySQLデータベースサーバーへのリモートアクセスを提供する必要がある場合があります。次の手順に従って有効にすることができます。
ステップ1:SSHを使用してログインします(サーバーが環境またはイントラネットの外部にある場合)
まず、PuTTyを使用してWindowsから、またはSSHを使用してLinuxからリモートMySQLデータベースサーバーにssh経由でログインします
ステップ2:my.cnfファイルを編集します
接続したら、vi:
などのテキストエディタを使用してMySQLサーバー構成ファイルmy.cnfを編集する必要があります。- DebianLinuxの場合 ファイルは/etc/mysql/my.cnfにあります 場所。
- Red Hat Linux / Fedora /CentosLinuxの場合 ファイルは/etc/my.cnfにあります 場所。
/etc/my.cnfを編集するには、次のコマンドを実行します:
# vi /etc/my.cnf
- Windows 、my.iniファイルはC:\ Program Files \ MySQL \ MySQL Server X.Yにあります(X.YはMySQLサーバーのバージョン番号です)
Windowsの場合、メモ帳でmy.iniファイルを開きます
ステップ3:ファイルを開いたら、次のように表示される行を見つけます
[mysqld]
行スキップネットワークがコメント化されていることを確認し(または行を削除し)、次の行を追加します
bind-address=YOUR-SERVER-IP
たとえば、MySQLサーバーのIPが173.234.21.12の場合、ブロック全体は次のようになります。
[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 = 173.234.21.12 # skip-networking ....
どこで、
- bind-address :バインドするIPアドレス。
- スキップネットワーキング :TCP/IP接続をまったくリッスンしないでください。 mysqldとのすべての対話は、Unixソケットを介して行う必要があります。このオプションは、ローカルリクエストのみが許可されているシステムに強くお勧めします。リモート接続を許可する必要があるため、この行をmy.cnfから削除するか、コメントを付ける必要があります。
ステップ4:ファイルを保存して閉じる
Debian / Ubuntu Linuxでは、次のコマンドを入力してmysqlサーバーを再起動します。
# /etc/init.d/mysql restart
RHEL / CentOS / Fedora / Scientific Linuxで、次のコマンドを入力してmysqlサーバーを再起動します。
# /etc/init.d/mysqld restart
Windowsでは、管理者としてコマンドプロンプトを開き、「
」と入力します。net stop MySQL net start MySQL
ステップ5:リモートIPアドレスへのアクセスを許可する
新しいデータベースへのアクセスを許可する
ユーザーバーとリモートIP162.72.20.23用にfooという新しいデータベースを追加する場合は、mysqlプロンプトで次のコマンドを入力する必要があります。
mysql> CREATE DATABASE foo; mysql> GRANT ALL ON foo.* TO bar@'162.72.20.23' IDENTIFIED BY 'PASSWORD';
既存のデータベースへのアクセスを許可する
162.72.20.23というリモートIPからユーザーwebadminのwebdbというデータベースに常に接続していると仮定します。既存のデータベースにこのIPアドレスへのアクセスを許可するには、mysqlプロンプトで次のコマンドを入力します。
mysql> update db set Host='162.72.20.23' where Db='webdb'; mysql> update user set Host='162.72.20.23' where user='webadmin';
ステップ6:MySQLのログアウト
mysqlからログアウトするにはexitコマンドを入力します:
mysql> exit
ステップ7:ポート3306を開く
Linuxiptablesファイアウォールを開くためのサンプルiptablesルール
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
または、162.72.20.23にあるWebサーバーからのリモート接続のみを許可します:
/sbin/iptables -A INPUT -i eth0 -s 162.72.20.23 -p tcp --destination-port 3306 -j ACCEPT
または、LANサブネット192.168.1.0/24からのリモート接続のみを許可します:
/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT
最後に、すべてのルールを保存します(RHEL / CentOS固有のコマンド)。
# service iptables save
Windowsでは、[コントロールパネル]>[Windowsファイアウォール]>[ポート3306の受信ルールの追加]に移動します
ステップ8:MySQLデータベースへのリモートアクセスをテストする
リモートシステムまたはデスクトップから、次のコマンドを入力します。
$ mysql -u webadmin –h 173.234.21.12 –p
Windowsでは、MySQLコマンドラインプログラムを実行し、MySQLルートフォルダー(Program Files \ MySQL \ MySQL Server 5.5 \ binなど)から次のコマンドを入力して、管理者としてログインします。
C:\Program Files\MySQL\MySQL Server 5.5\bin>mysql -u webadmin –h 173.234.21.12 –p
どこ、