아파치 또는 PHP-FPM이 원격 MySQSL 서버에 연결할 수 없는 문제가 있는 경우, 아래와 같이 원격 서버의 PDO 연결 오류의 예시
SQLSTATE[HY000] [2002] Permission denied
먼저 다음 명령으로 SELinux가 활성화되어 있는지 확인해야 합니다.
[root@serverdiary ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: disabled
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
또는 /etc/selinux/config 에서 볼 수 있습니다.
SELINUX=enforcing
SELinux에는 3가지 옵션이 있습니다.
- enforcing – SELinux 보안 정책이 적용됩니다.
- permissive – SELinux는 시행하는 대신 경고를 인쇄합니다.
- disabled – SELinux 정책이 로드되지 않습니다.
허용으로 변경할 수 있으므로 SELinux는 시행하는 대신 경고만 인쇄합니다.
[root@serverdiary ~]# setenforce 0
[root@serverdiary ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: disabled
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
또는 SElinux 설정에서 옵션을 계속 사용하려면 이 명령을 루트로 적용하고 apache 또는 php-fpm을 다시 시작하십시오.
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db 1
P 옵션은 영구적임을 의미하므로 재부팅 후에도 이 옵션이 계속 적용됩니다.