読者です 読者をやめる 読者になる 読者になる

valid,invalid

関心を持てる事柄について

外部から接続するのに失敗しまくった(ファイアウォール、my.cnf、権限)

MySQL

LinuxにインストールしたMySQLに外部から接続するのに何度も失敗して結構時間食った。

ファイアウォールでやらかす

まず最初のエラー。下記コマンドを試みる。
C:\Users\>mysql -u  -h '' -p
Enter password: *********
すると、

ERROR 2003 (HY000): Can't connect to MySQL server on '<クライアントIP>' (10060)
"Can't connect to MySQL server" でググった結果、DBサーバのファイアウォールの設定では?とのこと。
iptables -L
して設定状況を確認する。
INPUTチェインでREJECTしているルールがあったので削除。
(本来はダメだろうけど、とりあえず問題を切り分ける為に実施)

my.cnf でやらかす

再度接続を試みると、
ERROR 1042 (HY000): Can't get hostname for your address
またググる
MySQLの設定ファイル my.cnf に下記を追加すれば良いらしい。
skip-name-resolve
↓の通り追加した。
[mysqld]
(略)
skip-name-resolve
(略)

権限でやらかす

再度接続を試みると、
ERROR 1130 (HY000): Host '<クライアントIP>' is not allowed to connect to this MySQL server
またググる
ログインを試みているユーザに、クライアントPCからアクセスする権限を付与しないといけないらしい。
GRANT ALL PRIVILEGES ON *.* TO @'<クライアントIP>' IDENTIFIED BY '<パスワード>' WITH GRANT OPTION;
実際はデータベースやテーブルをちゃんと指定する必要あり。。 これでようやく…
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.10 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

【参考】

MySQLで外部から接続するときにチェックする項目 - yummy-yummy
MySQL を外部接続できるようにする - 怠惰な日々
Linuxコマンド集 - 【iptables】パケットフィルタリングを設定する:ITpro