hero_picture

外部サイトからのDB接続について(MYSQL)

2015/10/23

こんにちは、yagiyagiです。

早速ですが、本題に入ろうと思います。

外部サイトからDBサーバ(MYSQL)に接続する場合、セキュリティの観点から

通常、接続できません。権限を付与する必要があります。

1GRANT ALL PRIVILEGES ON *.* TO スキーマ名@"%" IDENTIFIED BY 'passward' WITH GRANT OPTION;
2

ですね。ググるとよく見かけます。(詳細な説明は他サイトを参照してください)

これで、少しハマってしまった経験があるので、ご紹介したいと思います。

どういう経緯かはよく覚えていないのですが、

1GRANT ALL PRIVILEGES ON *.* TO hoge@"%" IDENTIFIED BY 'passward1' WITH GRANT OPTION;
2GRANT ALL PRIVILEGES ON *.* TO hoge@"192.168.1.199" IDENTIFIED BY 'passward2' WITH GRANT OPTION;
3

という2つのSQL文を発行しました。エラーなく正常終了します。

そして接続しようと試みたところ、コネクションエラーが発生。。。

うーーん、なぜ接続できないのだろうかと悩み、ユーザ情報を確認してみると

1select user, host,password from mysql.user;
2+------+---------------+----------+
3| user | host          |password  |
4+------+---------------+----------+
5| hoge | %             |passward1 |
6| hoge | 192.168.1.199 |passward2 |
7+------+---------------+----------+
8

あれ!?パスワードが微妙に違う。。。(汗)

もうおわかりですね。

hoge/passward2で接続を試みた結果がコネクションエラーでした。。

hoge/passward1で接続するかキチンと意図した権限を付与しなおすと正常接続できました。

ググってコピペで実行。。。よくやってしまう行為ですが

開発環境とはいえ、意味を理解して実行しないといけないなと反省しました。というお話です。