MariaDB를 최초 설치후 접속 시 Connection refused: getsockopt 에러가 발생하는 경우 체크 포인트
개요 : 라즈베리파이에 MariaDB 설치 후 로컬 머신에서는 잘 접속 되지만 다른 컴퓨터에서 DB 클라이언트(DBeaver)로 접속시 아래와 같이 접속 실패가 떨어짐
1. MariaDB가 가동중인지 확인
$ sudo systemctl status mariadb
위와 같이 나오면 정상 적으로 가동되고 있는 것 입니다.
2. 외부 접속 가능하도록 수정
MariaDB를 최초 설치하는 경우 기본 설정은 로컬(127.0.0.1)에서만 접속 하도록 설정되어 있습니다.
bind-address를 수정해야 합니다.
라즈베리파이 Ubuntu 기준으로 /etc/mysql/mariadb.conf.d/50-server.cnf 파일을 수정합니다.
$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
... 생략 ...
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
... 생략 ...
기본 127.0.0.1을 0.0.0.0 으로 수정합니다.
(주의! : 0.0.0.0 으로 설정하는 경우 어디서든 접속이 가능하므로 외부에 노출되는 서버의 경우 보안을 위해 방화벽, 계정의 host ip등을 제한해야 합니다.)
수정 한 후 MariaDB 서버를 재시작 해야 합니다.
$ sudo systemctl stop mariadb
$ sudo systemctl start mariadb
3. 사용하고자 하는 계정이 외부에서 접속 가능하도록 되어 있는지 확인
생성한 계정의 host ip가 제대로 잡혀 있는지 확인
$ sudo mysql -uroot
... 생략 ...
MariaDB [(none)]> use mysql;
... 생략 ...
Database changed
MariaDB [mysql]> select user, host from user;
+-------------+-----------+
| User | Host |
+-------------+-----------+
| admin | 192.168.% |
| admin | localhost |
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+-------------+-----------+
5 rows in set (0.004 sec)
MariaDB [mysql]> show grants for 'admin'@'192.168.%';
+-----------------------------------------------------------------------------+
| Grants for admin@192.168.% |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `admin`@`192.168.%` IDENTIFIED BY PASSWORD '보안삭제' |
| GRANT ALL PRIVILEGES ON `arcade`.* TO `admin`@`192.168.%` |
+-----------------------------------------------------------------------------+
2 rows in set (0.000 sec)
MariaDB [mysql]>
admin 이라는 계정을 미리 만들어 두었고 192.168.*.* 에서 접속 할 수 있도록 생성하고 arcade 라는 db에 모든 권한을 부여해 두었습니다.
(참고 : 계정 생성 방법)
4. MariaDB가 포트 확인 및 방화벽 확인 (필요시)
위와 같이 했는데도 접속이 안되는경우는 MariaDB가 원하는 포트를 리슨하고 있는지, 방화벽이 있는지 확인해야 합니다.
네트워크에 물리적으로 방화벽이 있는경우 방화벽 관리자에게 문의 해야 합니다.
MariaDB 포트 확인 (기본 설치 했으면 3306포트를 사용합니다.)
$ sudo netstat -nltp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5481/mariadbd
$
방화벽 (ufw) 확인
$ sudo ufw status
sudo: ufw: command not found
$
Ubuntu 기본 설치시 방화벽이 설치되지 않았습니다.
만약 방화벽이 설치되어 있는경우 MariaDB 포트를 허용합니다.
$ sudo ufw allow 3306/tcp
윈도우에서 telnet 으로 접속 가능한지 확인 할 수 있습니다.
(telnet 은 기본 설치 프로그램이 아니므로 추가 설치 해야 합니다. 참고 : https://jsson.tistory.com/44)
PS C:\users\user> telnet 192.168.2.8 3306
끝.
'DataBase' 카테고리의 다른 글
[MariaDB] Galera Cluster로 HA 클러스터 구성하기 (2) | 2025.07.20 |
---|---|
[MariaDB] 보안 취약점 점검 #9 백업 & 소산 (3) | 2025.06.18 |
[AWS] MariaDB RDS - Spring Boot 'Error: 1040-08004: Too many connections' 처리 (0) | 2025.05.31 |
[AWS] RDS - MySQL/MariaDB 테이블 명 대소문자 구분(lower_case_table_names) 문제 (0) | 2025.04.30 |
[MariaDB] 보안 취약점 점검 #8 감사 로그 관리 (0) | 2025.03.13 |