0. 환경
- Windows 10
- Virtual Box
- CentOS 9 Stream
- MariaDB - 10.5.13
1. Service Port 변경
1. 해당 설정 파일을 vi, vim 편집 툴을 이용하여 내용을 추가해줍니다.
# vi /etc/my.cnf.d/mariadb-server.cnf
[mariadb]
port=5320
2. DB를 시작 / 재시작해줍니다.
# systemctl start mariadb
or
# systemctl restart mariadb
3. 만약 다음과 같은 상황이 발생된다면 로그를 확인해봅니다.
# systemctl start mariadb
Job for mariadb.service failed because the control process exited with error code.
See "systemctl status mariadb.service" and "journalctl -xeu mariadb.service" for details.
4. DB 로그 확인
최하단에 최근에 발생한 로그 확인(최하단 이동 shift + G)
# vi /var/log/mariadb/mariadb.log
다음과 같은 에러 로그가 발견되었다면 거의 SELinux 관련 문제입니다.
2022-04-02 23:52:11 0 [ERROR] Can't start server: Bind on TCP/IP port. Got error: 13: Permission denied
2022-04-02 23:52:11 0 [ERROR] Do you already have another mysqld server running on port: 5320 ?
2022-04-02 23:52:11 0 [ERROR] Aborting
원인
SELinux 보안 문제
해당 데몬에 대해 SELinux에 서비스 포트가 등록되지 않아 있으므로 권한이 없는 상황
해결 방법
1. SELinux 해제 -> 2번 항목
2. SELinux 포트 등록 -> 3번 항목
2. SELinux 해제
1. 상태 확인
# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
2. 설정 변경(Selinux 해제)
# vi /etc/selinux/config (centos 8 이상)
or
# vi /etc/sysconfig/selinux (centos 7 이하)
3. SELINUX=enforcing 을 SELINUX=disabled 로 변경 후 저장
SELINUX=disabled
4. 재부팅
# sudo reboot
5. DB 시작 / 재시작
# systemctl start mariadb
or
# systemctl restart mariadb
6. LISTEN Port 확인
# netstat -ntap | grep LISTEN | grep 5320
tcp6 0 0 :::5320 :::* LISTEN 1249/mariadbd
3. SELinux 설정
1. SELinux에 등록되어있는 DB 포트 확인
# semanage port -l | grep mysqld_port_t
mysqld_port_t tcp 1186, 3306, 63132-63164
※ 만약 명령어가 실행되지 않을 경우 semanage 설치합니다.
# yum install -y policycoreutils-python
or
# dnf install -y policycoreutils-python
3. 사용할 포트 등록
# semanage port -a -t mysqld_port_t -p tcp 5320
[포트를 잘 못 등록했을 경우 (등록 삭제)]
$ semanage port -d -t mysqld_port_t -p tcp 5320
4. 확인
# semanage port -l | grep mysqld_port_t
mysqld_port_t tcp 5320, 1186, 3306, 63132-63164
5. DB 시작 / 재시작
# systemctl start mariadb
or
# systemctl restart mariadb
6. LISTEN Port 확인
# netstat -ntap | grep LISTEN | grep 5320
tcp6 0 0 :::5320 :::* LISTEN 1249/mariadbd
'DB > MySQL-MariaDB' 카테고리의 다른 글
[Mysql/MariaDB] DB 관리전용 유틸리티 (mysqladmin) (0) | 2022.02.21 |
---|---|
[Mysql/MariaDB] DB 데이터 경로 변경 (datadir) (0) | 2022.02.19 |
[Mysql/MariaDB] DB, TABLE 용량 확인(information_schema.tables) (0) | 2022.02.18 |
[Mysql/MariaDB] DB 프로세스 목록 확인(show processlist) (0) | 2022.02.17 |
[Mysql/MariaDB] DB 서버 시스템 변수 변경 (Server System Variables) (0) | 2022.02.16 |