[Mysql 외부에서 접속 허용하기]
MySQL을 설치하면 기본적으로 로컬(localhost)에서만 접속이 가능하고 외부에서는 접속이 불가능하게 되어 있다.
외부에서 접속해보면 다음과 같은 오류 메시지가 나온다.
Host '111.222.333.444' is not allowed to connect to this MySQL server
아래 쿼리를 날려보면 localhost가 나온다 (즉 root 계정으로는 로컬에서만 접속가능하다는 뜻)
SELECT Host FROM mysql.user WHERE user='root';
[모든 IP 접속허용하기]
INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO
'root'@'%';
FLUSH PRIVILEGES;
[일부 IP 대역 허용하기]
다음과 같이 설정하면 111.222로 시작하는 모든 IP가 허용된다.
INSERT INTO mysql.user (host,user,password) VALUES ('111.222.%','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO
'root'@'111.222.%';
FLUSH PRIVILEGES;
[특정 IP 1개 허용하기]
INSERT INTO mysql.user (host,user,password) VALUES ('111.222.333.444','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO
'root'@'111.222.333.444';
FLUSH PRIVILEGES;
[초기화 하기]
모든 IP를 허용한 경우 다음과 같이 원래 상태로 복구할 수 있다.
DELETE FROM mysql.user WHERE Host='%' AND User='root';
FLUSH PRIVILEGES;
====================================================
1. ROOT 권한으로 접속한 뒤 사용자 계정을 만들고, 명령어 권한 주기
GRANT ALL ON DB이름.* TO '사용자ID' IDENTIFIED BY '비밀번호';
EX) GRANT ALL ON jnetdb.* TO 'jnetwork' IDENTIFIED BY 'pass2017';
DB 이름 : jnetdb
사용자ID : jnetwork
비밀번호 : pass2017
2. 생성한 사용자 계정에 접속 권한 주기
GRANT ALL PRIVILEGES ON DB이름.* TO '사용자ID'@'HOST이름' IDENTIFIED BY '비밀번호'
EX) GRANT ALL PRIVILEGES ON jnetdb.* TO 'jnetwork'@'%' IDENTIFIED BY 'pass2017';
DB 이름 : jnetdb
사용자ID : jnetwork
비밀번호 : pass2017
HOST이름 :
1) %일 경우 모든 곳에서 접속 가능
2) IP주소일 경우 해당 특정 IP에서만 접근 가능
3)LOCALHOST 일경우 자신의 컴퓨터에서만 접속가능
3. MySQL 에 접속하자.
mysql -h IP주소 -u 사용자ID -p
ex ) mysql -h 192.168.0.100 -u jnetwork -p
=======================================
해당 유저의 접속 권한 보기
SHOW GRANTS FOR 'user';