MySQL을 외부 IP에서 접속할 수 있도록 하기 위해서는 설정이 필요하다.
아래에 각각 모든 IP에서 접속 / 특정 IP에서 접속 / 원래상태로 복구하는 방법에 대한 정리를 하도록 하겠다.
1. 모든 IP에서 접속
use mysql;
INSERT INTO mysql.user(host, user, password) VALUES('%', 'root', password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
기본적으로 위의 내용을 차례대로 입력할 경우 root라는 계정으로 접속할 경우 모든 외부 IP에서 접속이 가능하다.
하지만 MySQL의 버전에 높아지면서 위의 내용을 입력할 경우 보안 관련 오류가 발생할 수 있다.
이 경우 오류 메세지는 두 가지가 발생할 수 있는데 각각 아래의 두 가지의 방법으로 해결이 가능하다.
- ERROR 1364(HY000): Field 'ssl_cipheer' doesn't have a default value
use mysql;
INSERT INTO mysql.user(host, user, password, ssl_cipher, x509_issuer, x509_subject) VALUES('%', 'root', password('패스워드'), '', '', '');
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
- ERROR 1364(HY000): Field 'authentication_string' doesn't have a default value
use mysql;
INSERT INTO mysql.user(host, user, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES('%', 'root', password('패스워드'), '', '', '');
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
참고로 authentication_string로 password를 변경한 경우 VALUES에서 password('패스워드')에 변경이 일어나지 않는다.
2. 특정 IP에서 접속
이 경우에는 VALUES에서 HOST값을 변경하면 된다. 아래의 예제는 111.222.xxx.xxx의 IP에 접속이 가능하며 한 IP만 접속이 가능하게 하려면 해당 IP를 정확히 적어주면 된다.
use mysql;
INSERT INTO mysql.user(host, user, password) VALUES('111.222.%', 'root', password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
2. 원래 상태로 복구
외부에서 접속하지 못하도록 하기 위해서는 입력한 내용을 아래와 같이 삭제하면 된다.
use mysql;
DELETE FROM mysql.user WHERE HOST = '%' AND User = 'root';
FLUSH PRIVILEGES;
'알아가기 > 알거리' 카테고리의 다른 글
IE8 특정 CSS 적용 (0) | 2017.12.13 |
---|---|
IE8에서 trim() 함수 사용하기 (0) | 2017.12.01 |
오라클 ORDER BY DECODE/CASE 사용 방법 (0) | 2017.06.23 |
오라클에 엔터(줄바꿈) 입력 및 제거 (0) | 2017.05.29 |
구글 검색 새탭으로 열기 (0) | 2017.03.10 |