http://blog.servis.co.kr/index.php/2019/06/28/mysql-not-allowed-to-connect/

 

mysql 외부접속 허용및 제거

웹서버와 디비서버를 분리할경우 외부에서 mysql에 접속하려면 외부접속 권한이 필요하다   일반적으로 외부접속 권한이 없을시 아래와 같은 메시지가 나옴 ERROR 1130 (HY000): Host '192.168.0.10' is not a

blog.servis.co.kr

 

mysql 외부접속 허용및 제거

웹서버와 디비서버를 분리할경우 외부에서 mysql에 접속하려면 외부접속 권한이 필요하다

 

일반적으로 외부접속 권한이 없을시 아래와 같은 메시지가 나옴
ERROR 1130 (HY000): Host ‘192.168.0.10’ is not allowed to connect to this mysql server

mysql 서버에서 콘솔로 접속해서 권한을 확인해보면 localhost 나  127.0.0.1  로 등록 되어있는걸 확인할수 있다

mysql> use mysql
mysql> select host, user, password from user;

권한설정
모든 ip허용
% 는 모든ip를 허용하지만 localhost는 포함되지 않음
mysql> GRANT ALL privileges ON *.* TO 아이디@’%’ IDENTIFIED BY ‘패스워드’;

특정ip허용
mysql> GRANT ALL privileges ON *.* TO 아이디@’111.111.111.111′ IDENTIFIED BY ‘패스워드’;

설정적용
mysql> FLUSH privileges;

 

2. 권한 설정 하기
설정을 할 때, 특정 IP나 특정 IP대역만 허용을 하거나, 전체를 허용되게 하는 방법이 있습니다.
1) 특정 IP 접근 허용 설정
mysql> grant all privileges on *.* to ‘root’@‘192.168.56.101’ identified by ‘root의 패스워드’;
2) 특정 IP 대역 접근 허용 설정
mysql> grant all privileges on *.* to ‘root’@‘192.168.%’ identified by ‘root의 패스워드’;
3) 모든 IP의 접근 허용 설정
mysql> grant all privileges on *.* to ‘root’@‘%’ identified by ‘root의 패스워드’

 

외부접속 허용제거
% 모든아이피 허용제거
mysql> DELETE FROM mysql.user WHERE Host=’%’ AND User=’아이디’;

특정ip허용 제거
mysql> DELETE FROM mysql.user WHERE Host=’111.111.111.111′ AND User=’아이디’;

설정적용
mysql> FLUSH privileges;

 

외부접속 확인방법
mysql -h 111.111.111.111 -u servblog -p
설정이 바르게 적용됬으면 정상적으로 접속되는걸 확인할수 있다

mysql 서버에  iptables 에서 mysql포트가 차단되어 있는지 확인한다
my.cnf 파일에 아래와 같은 설정이 있을시 삭제한다
bind-address = 127.0.0.1

 

1.데이터 베이스 접속하기
mysql -u 사용자명 -p 데이터베이스이름
mysql -u root (계정과 비번을 만들지 않았을때)
mysql -u root -p(루트 비번이 있을때)

2.데이터베이스 추가 
mysqladmin -u root -p create 데이터베이스명

3.루트 계정비밀번호 바꾸기
mysqladmin -u root -p password 새비밀번호
mysqladmin -u root password 비밀번호(비밀번호를 처음 설정시)

4.사용자추가 및 권한 설정
사용자계정:abc , 사용자 패스워드:1234

접속 : mysql -u root -p

mysql> USE mysql;

mysql> INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
mysql> INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));
mysql> FLUSH privileges;

계정이 생성되었다면, 그 계정이 접근할 수 있는 데이터베이스를 생성하고 권한을 부여해야 합니다.

mysql> CREATE DATABASE 데이터베이스명;
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@locahost IDENTIFIED BY '비밀번호';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 계정아이디@'%' IDENTIFIED BY '비밀번호';

5.테이블 생성
create table test;

6.테이블 삭제
drop table test;

7.현재상태보기
status;

8.테이블목록보기
show tables;

9.데이터베이스 목록보기
show databases;

10.테이블구조보기 
explain tablesname;

11.데이터베이스 삭제 
drop database jsp

*체크*

우선, 기본적으로 mysql 은 tcp 3306 번 포트를 통해 서비스를 제공합니다.

따라서, 외부에서 DB에 접근할 수 있도록 하기 위해서는

서버의 tcp 3306 번 포트가 방화벽에 막혀 있지는 않은지 확인해야 하며

만약 막혀 있을 경우 열어주어야 합니다.

iptables -L 명령으로 차단/허용 리스트 조회가 가능합니다. 만약 포트가 막혀 있을 경우,

# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

명령으로 열어주시면 됩니다.



출처: https://vkein.tistory.com/entry/MySQL-접속-명령어 [기록하며 성장하기]

 

'개발' 카테고리의 다른 글

Python 캡처 (펌)  (0) 2022.01.17
Python logging 사용하기(펌)  (0) 2022.01.02
php mysql 명령어  (0) 2021.11.22
new bufferedoutputstream(response.getoutputstream()) resource leak  (0) 2021.11.04
Spring Boot  (0) 2021.08.13
블로그 이미지

wtdsoul

,