MySQL

最近の RHEL/CentOS 系 Linux では iptables ではなく firewalld

他人が構築した CentOS の環境を触る機会がありまして、ここで動いている MySQL に外部 MySQL クライアントでアクセスしようとしたところ、拒否されました。きっとファイアウォールのせいだろうなと iptables を周りを見ることにしました。

$ sudo iptabels -L

で状態を見たところ、思った通り SSH、HTTPとFTP ぐらいしか通さないようになっていました。そこで試しに、

$ sudo iptables -F

としてルールを削除したところ、問題なく外部 MySQL クライアントからデータベースに接続できました。

で、本来とるべき対応として、外部 MySQL クライアントからの通信を通すようにしようとしたときに iptables の設定ファイルである /etc/sysconfig/iptables がどこにもないことに気づきました。

ではどうやって設定しているのか。調べると、そもそも

こちらに iptables ではなく firewalld を使っているよ、との記載。本当に firewalld が動いているか。

$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-01-10 01:45:27 UTC; 2h 44min ago
     Docs: man:firewalld(1)
 Main PID: 577 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─577 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

running とのことで本当に動いていることがわかりました。

$ sudo firewall-cmd --list-services --zone=public  --permanent
ssh dhcpv6-client http ftp

で、現状許可しているサービスがわかります。ここに MySQL を追加してやれば良いということで、

$ sudo firewall-cmd --add-service=mysql --zone=public --permanent
success

­とすると、

$ sudo firewall-cmd --list-services --zone=public  --permanent
ssh dhcpv6-client http ftp mysql

­mysql が追加されました。しかし、まだこれでは接続できません。

$  firewall-cmd --reload
success

­これで接続できるようになります。

-MySQL
-, , ,

© 2024 yshystsj.com Powered by AFFINGER5