エラーの原因はSElinux
背景
レンタルサーバーで運用していたシステムを自前サーバーに移す作業をしていましたが、データベースへの接続でエラーになりました。WEBサーバーはCentOSstream8上にapacheで構築し、データベースサーバーは別途CentOSstream8上にmariaDBで構築しています。データベースへのアクセスはPHPを使用して行っており、コード自体はレンラルサーバー上で使用していたものなので問題ありません。
エラーの詳細
クライアントマシンからアクセスした際、エラーとなるのでログを出力したところ、「[2002]Permission Denied」となりました。
原因の絞り込み
WEBページ開発用にWindows上にXAMPPでテスト環境を用意していましたが、そこからは問題無くアクセス出来ます。なのでデータベースサーバー側ではなく、WEBサーバー要因と考え、SElinuxを停止してみると無事にアクセス出来ました。
SElinuxまたお前か・・・
環境構築の度に妨害してくるのでいい加減嫌気が差してきましたが、セキュリティレベルは落としたくないので再度SElinuxを起動しておきます。
対処法
こちらのサイトが参考(というかそのまま利用させてもらった)になりました。
https://qiita.com/ak-ymst/items/54537fe2d20620d079e3
サイト内の環境は私の構築した環境と少々異なるようですが、下記のように同じやり方で対処できます。
[root@webserver hoge]# getsebool httpd_can_network_connect httpd_can_network_connect --> off [root@webserver hoge]# setsebool -P httpd_can_network_connect 1 [root@webserver hoge]# getsebool httpd_can_network_connect httpd_can_network_connect --> on