サイトアイコン Lonely Mobiler

MySQL サーバーに外部(localhost以外)から接続する方法

諸事情があり MySQL サーバーに他のサーバーから接続する必要が出てきた。しかし MySQL 標準ではローカルホストからの接続のみ許可しているようだ。接続しようとすると以下のようなエラーが出ると思う。

ERROR 1130 (HY000): Host '203.0.113.1' is not allowed to connect to this MySQL server

ERROR 1045 (28000): Access denied for user 'hoge'@'203.0.113.1' (using password: YES)

このページでは MySQL サーバーへ他の端末から接続できるようにする方法を紹介する。

ファイアウォールで MySQL を許可する

まずは MySQL ではなく OS に搭載されているファイアウォールの設定を変更して MySQL の通信を通るようにする。自分のサーバーは Ubuntu を利用しているため、UFW の設定を変更する。

$ sudo ufw allow 3306 $ sudo ufw status Status: active

To Action From -- ------ ---- Nginx Full ALLOW Anywhere OpenSSH ALLOW Anywhere 3306 ALLOW Anywhere

MySQL サーバーの設定ファイルで他のアドレスを許可する

次に MySQL サーバの設定ファイルより bind-address をコメントアウトして接続できる IP アドレスの制限をはずす。

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # コメントアウトする #bind-address = 127.0.0.1

変更したら mysql サーバーを再起動しよう。

$ sudo service mysql restart

データベースへのアクセス権限を与える

MySQL サーバーにログインしてデータベースへのアクセス権限を追加する。

$ sudo mysql -u root -p

mysql> select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | hoge | localhost | | fuga | localhost | | root | localhost | +------------------+-----------+

デフォルトではこのように localhost のみ接続可能となっているので、ここに IP アドレスを追加してやる。

mysql> grant all privileges on hoge.* to hoge@"203.0.113.1"; mysql> flush privileges; mysql> mysql> select user,host from mysql.user; +------------------+-------------+ | user | host | +------------------+-------------+ | hoge | 203.0.113.1 | | hoge | localhost | | fuga | localhost | | root | localhost | +------------------+-------------+

IP アドレスの部分を % にすると全ての IP アドレスから許可される。

ここまで設定できれば MySQL サーバーへアクセスできると思う。

Sponsored Link
モバイルバージョンを終了