Programing Tool/mysql

Mysql 외부 원격접속 (Ubuntu)

코딩하는곰팅이 2024. 10. 5. 14:22

mysql 은 cmd창 같은곳에서 한줄한줄 써야되는줄 알았다 (과거에는)

 

하지만 mysql workbench라는 편집기(?) 존재를 알게되고 매우 편리하게 사용중이다.

 

mysql DB가 설치되어있는 서버에다가 방화벽 포트번호를 오픈해주고 원격 접속을 하면 접속이 가능해진다.

 

Ubuntu에 접속가능하게 설정을 하는 방법을 정리해 보려고 한다.

 

현재 Ubuntu 의 버전은 20.04.6 이며 mysql이 이미 설치되어있다 가정한다.

 

# mysql 사용자 생성 

먼저 접속할 사용자의 계정을 생성해야 된다 (root는 사용하지 말자)

 

$ sudo mysql -u root -p

mysql > use mysql;

위 명령어로 mysql에 접속한다.

 

mysql> create user 'username'@'%' identified by 'password';

 

'username' 에 해당하는 곳에 사용자 아이디를 만들고 'passwod'에 비밀번호를 설정한다 '' 는 구분자로 반드시 있어야 한다.

 

* 'username'@'%' : 사용자가 외부에서 접근 가능하게 설정

* 'username'@'localhost' : 해당 사용자는 내부(설치된 기기) 에서만 접근 가능

* * 'username'@'xxx.xxx.xxx.xxx' : 해당 사용자는 지정한 ip 주소로만 접근이 가능

 

# 사용자가 생성이 된것을 확인

 

mysql > show databases;        //현재 db 목록을 보여줌

mysql > select user, host from user;    //mysql database의 사용자 목록 출력

 

 

# 사용자에게 데이터베이스 접속권한 부여하기

 

// 테스트용 db 생성
mysql > create databases test01  

// 'username'@'%' 에게 test01 db에 대한 권한을 부여한다
mysql > grant all privileges on test01.* to 'username'@'%';

 

test01.* 은 test01 에생성할 모든 테이블을 의미한다.

 

mysql > flush privileges; // 현재 사용중인 MYSQL의 캐시를 지우고 새로운 설정을 적용시키기 위해 사용한다. 이 명령어를 사용하려는 사용자는 reload 권한을 가지고 있어야 한다.

 

 

모든 DB에 접속이 가능하게 권한을 부여하려면

 

// 일케해야 모든 db에 접속권한을 주는거 같다.
mysql > grant all privileges on *.* to 'username'@'%' 

// 캐쉬 초기화는 꼭 해주어야 된다.
mysql > flush privileges;

 

# MySQL 외부 접속 설정

 

MySQL 설정 파일의 위치는 /etc/mysql/mysql.conf.d 이다

 

$ /etc/mysql/mysql.conf.d

$ sudo vim mysqld.cnf

 

 

port 번호를 기본 3306으로 설정한다.

 

밑에 bind-address, imysqlx-bind-address 값을 주석처리한다.

 

여기까지 설정하면 mysql 설정은 완료가 된다.

 

 

# MySQL workbench

위 사진에서 + 를 눌러 설정창을 연다.

 

 

connection name : 해당 설정의 이름 닉네임

 

hostname : 접속하려고 하는 ip주소 

 

port : 포트번호

 

username : DB 계정 (username 으로 설정 했던것)

 

password : store in Vault 에서 계정인증을 받는다.

 

위 과정을 설정완료하면 접속이 가능해 진다.