誤解にみちたmariadb/mysqlのbind-address

誤解にみちたmariadb/mysqlのbind-address

2021年2月13日
ネット、計算機のお伴

mysqlをlocalのunix_socket接続ではなくてTCPで外部IPから接続する場合、当然IP制限をかけたいわけで、そこでハマったのは制限のかけかた。

実はやったことがなかったので、最初はbind-address項目(ubuntu 20.4は、/etc/mariadb.d/50-server.confにある)にIP書けばいいんじゃないかと思ったがそれは大間違い(qiitaあたりで堂々と書かれてあったので、それを鵜呑みにしてハマった:しかも複数IP記述可能とかも書いてあったが、そんなものはできない)。

bind-addressは、名の通りmysql(mariadb)をどのIPにバインドするかということなだけで、接続IP制限とは無関係。
bind-adderss = 10.0.0.bb
なら、mysqlが稼働している10.0.0.bbホストとバインドしているという意味でしかない。稼働していないホストからの接続許可ではないのである。ちなみに、上を設定すると、同じホストの127.0.0.1を指定しても接続できません。

で、IP制限をかけるなら、bind-addressをコメントアウトし(bind-addressを有効にしてしまうと、バインドとは無関係のホスト(IP)からは接続できないから)、その「束縛」バインドを解き放ち!、mysql の中でIP付きのユーザを作るというのが作法とのことでした。あとはFWのポートで制限する、と。

小二時間(っていう言葉はないが)ほどハマったので悔しくてここに書いておいた。