mysql, maria 등의 서비스 포트 변경이 안 될때
· 약 3분
일반적인 포트 변경
포트 확인
## grep 뒤에 확인할 포트를 적으면 된다.
$ netstat -lp | grep 3307
iptable 수정
$ vi /etc/sysconfig/iptables
## 해당 포트를 방화벽에서 열어준다.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3307 -j ACCEPT
database 포트 변경
$ vi /etc/my.cnf
## 포트가 설정되있는 부분을 찾아 변경한다.
port = 3307
서비스 재시작
service mysql restart
잘 했는데 서비스가 올라가지 않는다!!!
원인
로그 확인
mysql 설치 경로로 이동하여 로그를 살펴보자.
$ cd /var/lib/mysql/ # basedir 설정이 되어있다면 해당경로를 덧붙힌다.
$ cat {hostname}.err
[ERROR] Cant start server: Bind on TCP/IP port. Got error: 13: Permission denied
[ERROR] Do you already have another mysqld server running on port: 3307 ?
[ERROR] Aborting
해당 포트에 권한이 없다. 해당 포트를 다른 mysqld 서비스가 사용하는가? 라고 로그가 남겨져 있다.
SELinux 확인
$ sestatus
SELinux status: enabled
혹시나 역시나 SELinux가 활성화 되어있다. SELinux에서 포트가 서비스용으로 활성화가 되지 않았기 때문에 계속 거절당한 것이였다.
해결
SELinux 설정 확인
semanage 명령어를 사용해서 확인하고 변경할 수 있다. 명령어 실행이 안될 경우 policycoreutils-python 패키지를 설치해주면 된다.
## semanage 설치
$ yum install -y policycoreutils-python
## 포트 확인
## mysql
$ semanage port -l | grep mysqld_port_t
## http
$ semanage port -l | grep http_port_t
mysqld_port_t tcp 1186, 3306, 63132-63164
변경하려는 3307 포트는 등록되어 있지 않다.