Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
34
Help us understand the problem. What is going on with this article?
@u-dai

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

More than 1 year has passed since last update.

はじめに

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

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

34
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
u-dai
元営業マン。2018年よりエンジニアへと転職。学んだことをメモしていきたいと思います。
creema
全国のつくり手とつかい手が Web 上で直接作品を売買できる、日本最大級のハンドメイドマーケットプレイス「Creema」の企画、開発、運営するスタートアップです。「本当にいいものが埋もれてしまうことのない、フェアで大規模な新しい経済圏をつくろう」を合言葉に、メンバー一丸となって、たのしくストイックに活動を行っています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
34
Help us understand the problem. What is going on with this article?