揮発性のメモ2

最近知った知識を さも昔から知ってた風にメモ書きしていく

MariaDBで、ネットワーク接続ができない

ユーザーを追加してパスワードも設定しているのにネットワーク接続がエラーになる。

[hoge@unko ~]$ mysql -uviewer -ppass -h192.168.1.2 testdb
ERROR 1045 (28000): Access denied for user 'viewer'@'unko.localdomain' (using password: YES)

接続先がlocalhostUNIXドメインソケット)のときは正常に接続したので ネットワークの問題だったが


 原因:名前解決をしているため
 対処:名前解決をさせない


次のような設定を追記して問題は解決した
/etc/my.cnf.d/skipname.cnf

[mysqld]
# 名前解決をしない
skip-name-resolve

これをしないと 名前解決ができてしまったときに % に引っかからずエラーになるらしい。
MariaDB5.5 で発生したが、MariaDB10.1 では発生してないので 古い仕様かバグなんだろう多分。
解決までに3時間くらいかかった


問題解決後に、裏取りをしていたところ 次のページが検索に引っかかった。
stackoverflow.com


ユーザーとパスワードは設定されている?

次のように設定し、設定されていることを確認

CREATE USER 'viewer'@'%' IDENTIFIED BY 'pass';
CREATE USER 'viewer'@'localhost' IDENTIFIED BY 'pass';
GRANT SELECT ON testdb.* TO 'viewer'@'%';
GRANT SELECT ON testdb.* TO 'viewer'@'localhost';
FLUSH PRIVILEGES;
SELECT user,host FROM mysql.user WHERE user='viewer';
+--------+-----------+
| user   | host      |
+--------+-----------+
| viewer | %         |
| viewer | localhost |
+--------+-----------+

ネットワーク接続を受け付けている?

ネットワークは大丈夫なことを確認

# netstat -ntpl
(中略)
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4365/mysqld
# iptables-save
(中略)
-A IN_public_allow -p tcp -m tcp --dport 3306 -m conntrack --ctstate NEW -j ACCEPT