SELinux에서 Apache 또는 PHP-FPM이 원격 MySQL에 연결하도록 허용하는 방법

아파치 또는 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가지 옵션이 있습니다.

  1. enforcing – SELinux 보안 정책이 적용됩니다.
  2. permissive – SELinux는 시행하는 대신 경고를 인쇄합니다.
  3. 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 옵션은 영구적임을 의미하므로 재부팅 후에도 이 옵션이 계속 적용됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다