LinuxにインストールしたMySQLに外部から接続するのに何度も失敗して結構時間食った。
ファイアウォールでやらかす
まず最初のエラー。下記コマンドを試みる。C:\Users\>mysql -uすると、-h ' ' -p
Enter password: *********
"Can't connect to MySQL server" でググった結果、DBサーバのファイアウォールの設定では?とのこと。
ERROR 2003 (HY000): Can't connect to MySQL server on '<クライアントIP>' (10060)
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-yummyMySQL を外部接続できるようにする - 怠惰な日々
Linuxコマンド集 - 【iptables】パケットフィルタリングを設定する:ITpro