
MySQL 데이터베이스 서버에 원격 연결을 허용하는 방법
기본적으로 MySQL 서버는 localhost로부터의 연결만 정탐합니다. 이것은 같은 호스트에서 실행되는 프로그램만 접근할 수 있음을 의미합니다.그러나 일부 경우에는 MySQL 서버에 원격 위치에서 액세스할 필요가 있습니다.예를 들어 로컬 시스템이나 다중 서버 배포에서 원격 MySQL 서버에 연결해야 할 수도 있습니다. 이 서버는 데이터베이스 서버와 다른 컴퓨터에서 실행됩니다.한 가지 선택은 액세스MySQL server through SSH Tunnel
다른 하나는 원격 연결을 사용하도록 MySQL 서버를 구성하는 것입니다.이 문서에서는 MySQL 서버에 원격 연결을 허용하는 데 필요한 절차를 설명합니다.같은 설명도 MariaDB에 적용된다.
:
권한은 서비스를 다시 시작할 수 있습니다.Debian 또는 Ubuntu에서 MySQL 서비스를 다시 시작하려면 RedHat 기반 릴리스(예: CentOS)에
원격 사용자에게 전송합니다.
사용자가 에서 연결됩니다. 예를 들어, IP
다음 명령은 방화벽으로서 인터넷의 모든 IP 주소에서 MySQL 포트에 액세스할 수 있도록 합니다.이것은 매우 안전하지 않다.
Ubuntu의 기본 방화벽 도구입니다.인터넷에서 IP 주소에 대한 액세스를 허용하려면(매우 안전하지 않음):
CentOS의 기본 방화벽 관리 도구입니다.인터넷에서 IP 주소에 액세스할 수 있도록 허용하려면 (매우 안전하지 않음) 를 입력하십시오.
, 또는 MySQL 서버가 아닙니다listening on the IP address
. MySQL 서버를 모든 또는 특정 인터페이스로 구성합니다. 에게는 원격 사용자 액세스 권한이 부여됩니다. 방화벽의 MySQL 포트를 엽니다.
다른 하나는 원격 연결을 사용하도록 MySQL 서버를 구성하는 것입니다.이 문서에서는 MySQL 서버에 원격 연결을 허용하는 데 필요한 절차를 설명합니다.같은 설명도 MariaDB에 적용된다.
ySQL 서버 구성
첫 번째 단계는 MySQL 서버를 수신 기기의 특정 IP 주소 또는 모든 IP 주소로 설정하는 것입니다.만약 MySQL 서버와 클라이언트가 전용 네트워크를 통해 통신할 수 있다면, 가장 좋은 선택은 MySQL 서버를 전용 IP에서만 탐지하도록 설정하는 것이다.그렇지 않으면 공용 네트워크를 통해 서버에 연결하려면 MySQL 서버를 스캔 컴퓨터의 모든 IP 주소로 설정합니다.이를 위해서는 MySQL 구성 파일을 편집하고bind-address
옵션의 값을 추가하거나 변경해야 합니다.단일 IP 주소와 IP 범위를 설정할 수 있습니다.주소가 0.0.0.0
인 경우 MySQL 서버는 모든 호스트 IPv4 인터페이스에 연결합니다.IPv6를 시스템에 구성한 경우 0.0.0.0
대신 를 사용합니다.MySQL 구성 파일의 위치는 릴리스에 따라 다릅니다.Ubuntu 및 Debian에서는 파일::
이, Red Hat 기반 릴리스(예: CentOS)에서는 파일/etc/mysql/mysql.conf.d/mysqld.cnf
이 있습니다.text editor를 사용하여 파일 열기:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
/etc/my.cnf
로 시작하는 행을 검색하고 그 값을 MySQL 서버가 수신해야 할 IP 주소로 설정합니다.기본적으로 이 값은 bind-address
(localhost에서만 정탐) 로 설정됩니다.이 예에서, 우리는 값을 127.0.0.1
mysqld로 변경하여, MySQL 서버를 모든 IPv4 인터페이스를 탐지하는 것으로 설정할 것입니다.cnfbind-address = 0.0.0.0
# skip-networking
에 포함된 줄이 있으면 삭제하거나 줄에 0.0.0.0
을 추가하여 주석을 달십시오.ySQL 8.0 이상 버전에서는 skip-networking
명령이 없을 수 있습니다.이 경우 #
섹션에 추가합니다.완료되면 변경 사항을 적용하기 위해 MySQL 서비스를 다시 시작합니다.루트 사용자 또는 sudo 사용자만권한은 서비스를 다시 시작할 수 있습니다.Debian 또는 Ubuntu에서 MySQL 서비스를 다시 시작하려면 RedHat 기반 릴리스(예: CentOS)에
sudo systemctl restart mysql
를 입력하여 서비스를 다시 시작하십시오. sudo systemctl restart mysqld
원격 컴퓨터에서 사용자 액세스 권한 부여
다음 단계는 원격 사용자가 데이터베이스에 접근할 수 있도록 하는 것입니다.루트 사용자로 MySQL 서버에 로그인하려면 다음과 같이 입력하십시오.sudo mysql
오래된 컴퓨터 MySQL 인증 플러그인을 루트 사용자로 로그인하면 다음 명령을 실행하고 알림이 나타날 때 비밀번호를 입력하십시오. (adsbygoogle=window.adsbygoogle | []).푸시({});mysql -uroot -p
MySQL 셸 내부에 bind-address
문 togrant access 사용원격 사용자에게 전송합니다.
GRANT ALL ON database_name.* TO [email protected]'ip_address' IDENTIFIED BY 'user_password';
: [mysqld]
는 사용자가 연결할 데이터베이스의 이름입니다.GRANT
는 MySQL 사용자의 이름입니다.database_name
예IP address사용자가 에서 연결됩니다.
user_name
를 사용하여 사용자가 모든 IP 주소에서 연결할 수 있습니다.ip_address
는 사용자 암호입니다.%
클라이언트 컴퓨터에서 user_password
및 암호 dbname
사용자에게 데이터베이스 foo
에 대한 액세스 권한을 부여하려면 GRANT ALL ON dbname.* TO [email protected]'10.8.0.5' IDENTIFIED BY 'my_passwd';
방화벽 구성
마지막 단계는 원격 컴퓨터가 포트my_passwd
(MySQL 기본 포트) 에서 통신할 수 있도록 방화벽을 구성하는 것입니다.규칙
사용 중인 경우 iptables다음 명령은 방화벽으로서 인터넷의 모든 IP 주소에서 MySQL 포트에 액세스할 수 있도록 합니다.이것은 매우 안전하지 않다.
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
특정 IP 주소에서 액세스할 수 있음: sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW 회사
UFWUbuntu의 기본 방화벽 도구입니다.인터넷에서 IP 주소에 대한 액세스를 허용하려면(매우 안전하지 않음):
sudo ufw allow 3306/tcp
특정 IP 주소에서 액세스를 허용하려면: sudo ufw allow from 10.8.0.5 to any port 3306
방화벽 D
FirewallDCentOS의 기본 방화벽 관리 도구입니다.인터넷에서 IP 주소에 액세스할 수 있도록 허용하려면 (매우 안전하지 않음) 를 입력하십시오.
특정 포트에서 IP 주소에 액세스할 수 있도록 하려면 새 FirewallD 영역을 만들거나 풍부한 규칙을 사용할 수 있습니다.sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
10.8.0.5
라는 새 영역을 만듭니다. sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
변경 사항 확인
원격 사용자가 MySQL 서버에 연결할 수 있는지 확인하려면 다음 명령을 실행하십시오.mysql -u user_name -h mysql_server_ip -p
여기서 3306
은 사용자가 액세스 권한을 부여한 사용자의 이름이고, mysqlzone
는 MySQL 서버가 실행 중인 호스트의 IP 주소입니다.모든 설정이 올바르면 원격 MySQL 서버에 로그인할 수 있습니다.다음 오류가 발생하면 port 3306 is not open, 또는 MySQL 서버가 아닙니다listening on the IP address
.
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
다음 오류는 로그인하려는 사용자가 원격 MySQL 서버에 액세스할 수 있는 권한이 없음을 나타냅니다."ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server"