Tips - Database/MariaDB & Mysql

MariaDB 설정 후 원격 접속 설정하기

Logger.one 2020. 10. 11. 12:55
반응형

이전에 MariaDB를 간단히 설치했었는데요. 여기서는 설치 후 root의 비밀번호 설정 및 외부 ip에서 접속할 수 있는 설정을 해보겠습니다.

 

1. root 비밀번호 설정

초기 설치 시 mysql -u root -p 만으로 비밀번호 없이 접속이 가능한대요. 그럴 경우 보안에 매우 안 좋기 때문에 root의 localhost 접속에 대한 비밀번호 설정이 필요합니다. 

 

> ALTER USER 'root'@'localhost' IDENTIFIED BY '{비밀번호}';

위의 명령어에서 root는 사용자 localhost는 접속지 그러니까 여기서는 내부 접속을 의미합니다. 비밀번호는 비밀번호를 써주시면 됩니다.

 

이제 exit 로 접속을 끊어 주시고 mysql -u root -p 를 하시고 비밀번호를 입력하지 않으시면 접속이 되지 않는 것을 확인하실 수 있습니다.

 

 

2. 원격 접속 설정

2-1. bind 설정

우선 원격 접속 ip에 대한 bind를 설정해 주셔야 합니다. vi를 이용해 mariadb의 접속 가능 ip를 변경해 주시기 바랍니다.

 

# vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

 입력 후 bind 로 검색하시거나 설정값 중 찾아보시면 bind = 127.0.0.1 로 되어 있는 부분이 있습니다. 이 부분을 주석 처리해주시거나 원하는 원격지 ip 를 적어 주시면 됩니다.

 

 

제 경우 그냥 주석 처리를 했습니다.

 

이제 원격 접속을 위한 계정을 설정할 차례입니다.

 

2-2. 계정 원격 접속 설정

이제 원격 접속을 위한 계정 설정 방법입니다. 기존 'root'@'localhost' 의 경우 내부에서만 접속이 가능한 계정이고 외부 접속을 위해서는 외부 접속을 위한 계정을 만들어 주셔야 합니다.

 

계정 접속 후 CREATE로 USER로 계정을 생성해 주시기 바랍니다.

> CREATE USER '{계정}'@'{localhost|IP|%}' IDENTIFIED BY '{비밀번호}';

localhost는 내부 접속 허용, IP는 특정 IP 만 접속 허용 그리고 마지막으로 % 는 모든 IP 허용입니다.


이제 GRANT를 통해 생성된 계정에 권한을 부여해 주도록 합니다.

> GRANT ALL PRIVILEGES ON *.* TO '{계정}'@'{localhost|IP|%}';

* 명령어에서 *.* 는 {DB}.{TABLE} 에 대해서 ALL (모든 권한) 을 부여한다는 의미입니다. {DB} 혹은 {TABLE} 에 * 를 써주시면 '모든' 을 의미합니다.

 

이제 만약 허용된 IP에서 원격으로 접속을 해보면 정상 적으로 접속되는 것을 확인하실 수 있습니다.

MAC 의 Sequel Ace 로 접속한 모습

* 보안을 위해 가능하면 IP 는 제한을 두고 특정 계정에 권한을 나눠서 운영하는 것을 추천드립니다.

 

3. 계정 삭제하기

위에서 생성한 계정을 삭제하는 방법입니다. 간단히 DELETE 후 FLUSH 를 통해서 삭제 및 적용이 가능합니다.

> DELETE FROM mysql.user WHERE host='{localhost|IP|%}' and user='{계정}';

DELETE로 삭제하셨으면 FLUSH PRIVILEGES; 를 통해 변경 사항을 적용해 주도록 합니다.

> FLUSH PRIVILEGES;

이제 다시 접속해보려고 하시면 접속이 거부되는 것을 확인할 수 있습니다.

 

 

즐거운 개발되시기 바랍니다.

반응형