54
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQL で特定の IP アドレスからのアクセスを許可する

Posted at

はじめに

web サーバーから DB サーバーにアクセスを許可するときなど、MySQL で外部からのアクセスを許可したいときの設定あれこれを自分用にメモ。

おしながき

DB サーバーにログインして以下の作業を行っていきます。

  • MySQL の設定
  • MySQL で外部からのアクセス権を持ったユーザーの作成
  • firewall の設定

環境

OS: CentOS 7
MySQL: 5.7

MySQL の設定

必要に応じて my.conf を書き換えます。
なお、環境によって my.conf が保存されている場所が違うようです。
自分は /etc/my.cnf にありました。

【参考】my.cnfの場所を調べる

bind-address に接続したい IP アドレスを追加。

bind-address = 127.0.0.1
bind-address = 192.168.128.1(この行を追加)

もしくは bind-address をコメントアウトしてすべての IP アドレスを許可する。

# bind-address = 127.0.0.1

MySQL で外部からアクセスできるユーザーを作成

まずは root でログインします。

新しくユーザーを作成しますが、そのときにアクセスを許可する IP アドレスを指定します。

mysql> CREATE USER "sample"@"192.168.128.1" IDENTIFIED BY [password];

きちんと設定できているか確認してみます。

mysql> SELECT user, host FROM mysql.user

+---------------+-----------------+
| user          | host            |
+---------------+-----------------+
| sample        | 192.168.128.1   |
| mysql.session | localhost       |
| mysql.sys     | localhost       |
| root          | localhost       |
+---------------+-----------------+

sample ユーザーの host に 192.168.128.1 が設定されています。

次に、作成した sample ユーザーに 192.168.128.1 からアクセスできるよう権限を与えます。

mysql> GRANT ALL PRIVILEGES ON *.* TO "sample"@"192.168.128.1";

上記の例では、すべての権限をすべての DB に対して与えています。

firewall の設定

最後に、firewall で IP アドレスと MySQL を許可します。
なお、設定には sudo 権限が必要です。

まずは新しいゾーンを作成します。

$ firewall-cmd --new-zone=sampleZone --permanent
$ firewall-cmd --reload

次に、許可する IP アドレス(192.168.128.1/32)とサービス(MySQL)を指定します。

$ firewall-cmd --add-source=192.168.128.1 --zone=sampleZone --permanent
$ firewall-cmd --add-service=mysql --zone=sampleZone --permanent
$ firewall-cmd --reload

設定ができたら確認してみましょう。

$ firewall-cmd --list-all --zone=sampleZone

sampleZone (active)  # active であることを確認
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 192.168.128.1  # IP アドレスが追加されています
  services: mysql  # MySQLmysql
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

アクセスしてみる

web サーバーから IP アドレスを指定して DB サーバーの MySQL にアクセスしてみます。

$ mysql -h 192.168.128.1 -u sample -p

これでログインできれば成功です。

54
51
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?