제타위키 참고
MySQL 외부 접속 허용 설정MySQL에 원격 접속 허용하기MySQL에 root 원격 접속 허용하기
목차
1 문제상황[편집]
- MySQL을 설치하면 기본적으로 로컬(localhost)에서만 접속이 가능하고 외부에서는 접속이 불가능하게 되어 있다.
외부에서 접속해보면 다음과 같은 오류 메시지가 나온다.[1]
Host '135.79.246.80' is not allowed to connect to this MySQL server
text
- Toad for MySQL과 같은 DB 관리 도구를 사용하여 DB에 원격으로 접속하려면 허용해주는 로컬 작업이 필요하다.
- 여기서는 root를 원격에서 접속할 수 있도록 설정한다. 이것을 응용하면 다른 계정에도 적용할 수 있다..
2 확인[편집]
- 로컬에서 접속하여 아래 쿼리를 날려보면 localhost가 나온다.
mysql> SELECT Host,User,plugin,authentication_string FROM mysql.user; +-----------+------+-----------------------+-------------------------------------------+ | Host | User | plugin | authentication_string | +-----------+------+-----------------------+-------------------------------------------+ | localhost | root | mysql_native_password | *8024A6913C57E024BDFC6E813A57DFB924E6803A | | % | root | | | +-----------+------+-----------------------+-------------------------------------------+ 2 rows in set (0.000 sec)
console
즉 root 계정으로는 로컬에서만 접속가능하다.(같은 방법으로 root 대신 다른 사용자명도 조회할 수 있다.)버전이 5.7 이하에선 authentication_string 이 아닌 password 로 사용하여야 한다.[2]
3 변경[편집]
- 아래에서 '아이디'는 root로 해도 되지만, root가 아닌 별도의 아이디를 사용하는 것이 보안상 유리하다.
3.1 모든 IP 허용[편집]
- 참고로 %은 모든 아이피를 포함하지만, localhost는 포함되지 않는다.
방법1. GRANT
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' IDENTIFIED BY '패스워드';
mysql
방법2. INSERT+GRANT+FLUSH
INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('%','아이디',password('패스워드'),'','',''); GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%'; FLUSH PRIVILEGES;
mysql
3.2 IP 대역 허용[편집]
- 예: 111.222.xxx.xxx
방법1. GRANT
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.%' IDENTIFIED BY '패스워드';
mysql
방법2. INSERT+GRANT+FLUSH
INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('111.222.%','아이디',password('패스워드'),'','',''); GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.%'; FLUSH PRIVILEGES;
sql
→ 111.222로 시작하는 모든 IP가 허용된다.
3.3 특정 IP 1개 허용[편집]
- 예: 111.222.33.44
방법1. GRANT
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.33.44' IDENTIFIED BY '패스워드';
mysql
방법2. INSERT+GRANT+FLUSH
INSERT INTO mysql.user (host,user,password,ssl_cipher, x509_issuer, x509_subject) VALUES ('111.222.33.44','아이디',password('패스워드'),'','',''); GRANT ALL PRIVILEGES ON *.* TO '아이디'@'111.222.33.44'; FLUSH PRIVILEGES;
sql
4 원래 상태로 복구[편집]
- 모든 IP를 허용한 경우 다음과 같이 원래 상태로 복구할 수 있다.
DELETE FROM mysql.user WHERE Host='%' AND User='아이디'; FLUSH PRIVILEGES;
sql
5 LISTEN IP대역 변경[편집]
MySQL bind-address 변경 문서를 참고하십시오.
root@zetawiki:~# netstat -ntlp | grep mysqld tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 7931/mysqld
console
root@zetawiki:~# vi /etc/mysql/my.cnf
console
#bind-address = 127.0.0.1 [mysqld] bind-address = 0.0.0.0
ini
root@zetawiki:~# service mysql restart mysql stop/waiting mysql start/running, process 8190
console
root@zetawiki:~# netstat -ntlp | grep mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8190/mysqld
console
6 같이 보기[편집]
- ERROR 2003 (HY000): Can't connect to MySQL server on
- ERROR 1471 (HY000): The target table user of the INSERT is not insertable-into
- MySQL 서버 LISTEN IP 대역 변경
- Toad for MySQL
- MySQL root 패스워드 초기화
- MySQL 읽기전용 계정 생성
- MySQL 원격 접속
- MySQL SSH 터널링
- 로컬호스트
7 주석[편집]
:
'프로그램개발 > DB(MySQL,MariaDB,MongoDB)' 카테고리의 다른 글
[MySQL & MariaDB] Alias 별칭 부여시 조건문에서 사용하는 방법 (0) | 2021.04.23 |
---|---|
MariaDB 튜닝 참고 (0) | 2020.12.15 |
데이타베이스 관리툴 추천 (0) | 2019.09.23 |
칼리 리눅스(Kali Linex): Hydra - mysql brute force attack (0) | 2019.05.07 |
MySQL은 5.7전과 후 DB, User 추가 차이 (0) | 2018.12.03 |