php 업그레이드 작업 중 해결이 너무 안된 경우가 있어서 기록

 

php7버전 에서 php8 버전으로 업그레이드 해야할일이 있어서 테스트서버에 세팅하던 중

 

php에서 db를 접속하려면 permission denied 가 발생

 

php서버와 db서버는 따로 있었고 db는 기존 다른 버전의 php로 이상없이 접속이 되던 상황이었음

 

php와  apache를 세팅하고 php설정 등 오류가 발생한 상황들을 해결해 가던 중 db접속시 permission denied가 발생

 

해결하려고 시도한 방법

 

1. db에 해당 서버로 접근하는 계정 생성 후 권한 부여

 - '계정'@'%' 로 생성해보았지만 해결 안됨

 - 이미 같은 대역폭에서 해당 db로 접속하던 상황이었기 때문에 권한 이상없는거 확인

 

2. 방화벽 확인

 - curl 로 접속 확인

 - php서버에 mysql 설치하여 직접 접속시도 했을시 접속됨

 

3. ssl/tls

 - php 8.3 버전에는 ssl 접속 제한하는 경우가 있다고 하여 해당 기능 비활성화

 

4. selinux 비활성화

 - selinux에서 접근 제한 하는 경우가 있다고 하여 php서버의 selinux 비활성화

 

5. php.ini 설정

 - php서버에서 db서버로 직접 접근은 가능한데 php에서만 안되기에 php 설정문제인 것으로 생각되어 php.ini 설정 모두 확인

 

검색해서 나온 사례와 생각나는 부분 모두 테스트 해보았지만 해결안됨

 

그러던 중 한 검색결과를 보고 시도 해보니 바로 해걸...-_-

 

참고 : https://veneas.tistory.com/entry/SELinux-Php-mysqlconnect-Permission-denied-SELinux%EC%B0%A8%EB%8B%A8-%EB%AC%B8%EC%A0%9C

 

[SELinux] Php mysql_connect(): Permission denied (SELinux차단 문제)

목차 1. 문제 1.1. 현상 - Php가 설치된 서버에서 다른 DB서버로의 원격 접속할 경우 Permission denied가 발생하는 현상 발생 mysql_connect(): Permission denied 1.2. 원인 - 에러 원인은 SELinux(Security-Enhanced Linux)가

veneas.tistory.com

 

SELinux를 비활성화 했다고 생각 했는데 apache 서버의 설정이 활성화 된 상태여서 안됬던것

 

1. getsebool -a | grep httpd 조회

 

이중 httpd_can_network_connect가 off 인 것을 확인

 

setsebool -P httpd_can_network_connect on 명령으로 on으로 변경

 

다시 확인

 

 

 

on 으로 변경됨 확인

 

테스트시 문제 해결

 

SELinux 설정이지만 httpd 관련된 설정이기에 apache 카테고리로 설정

 

쉽지않네...

 

+ Recent posts