Linux/Ubuntu

WSL2 에서 Ubuntu에있는 Mysql Gui(DBeaver)로 연결하기(외부접속)

chief_sac 2021. 9. 9.
반응형

윈도우에서 GUI로 편하게 보면서 서버는 Ubuntu에띄워 원격으로 접속하기위해서 여러가지 시도를 해보았고 결국 성공했다. WSL에서 생성한 MySQL은 경로가 약간씩 다르고 해서 많이 헷갈렸던것 같다.

 

준비물

: DBeaver, WSL2(Ubuntu 20), 오류 를 버텨내는 정신력

 

 

오류들 : Connection refused : connect,  Public Key Retrieval is not allowed 오류 발생

 

결과 해결

 

 

과정

해당과정은 https://sac4686.tistory.com/53

 

MYSQL 설치 WSL(service오류, Failed to connect to bus 오류 해결)

문제발생 MySQL 설치중 발생한 문제 sudo systemctl start mysql // 입력시 System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down // 라는..

sac4686.tistory.com

 

여기에 git똥차게 참고하면됩니다!(내 글이다)

 

위 과정에서 보안 스크립트 프롬프트를 모두 설정하였다면

 

sudo mysql -u root -p

위 와 같은 명령어 혹은 sudo mysql만을 입력해서 mysql을 들어가고

 

데이터베이스를 생성하고

mysql > create database 데이터베이스명 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
--성공시
Query OK, 1 row affected, 2 warnings (0.01 sec)

 

잘 생성되었는지 테스트를 위해 아래와 같은 쿼리를 입력해서 확인해봅니다.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| databasetest       |
| information_schema |
| mysql              |
| mysqltest          |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

 

그다음은 아래 명령어를 입력하면서 원하는 사용자를 생성하여

mysql > create user 사용자이름 identified by '패스워드';

 

테스트를 해봅니다.

SELECT Host,User,plugin,authentication_string FROM mysql.user;

 

위와 같이 뜬다면 생성한 아이디에게 권한부여와 IP에따른 접근권한을 열어줍니다.

 

GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' IDENTIFIED BY '패스워드';
FLUSH PRIVILEGES;

 

아이디 옆에 % 는 모든 아이피에서 접근이 가능하다는 표기인데 localhost만 하고싶다면 localhost 특정 IP대역만을 허용하고 싶다면 ex 192.168.xxx.xxx 라고했을때 '192.168.%' 라고 표기하면됩니다!.

이후 ctrl + z를 눌러서 mysql을 빠져나온 후 

sudo netstat -ntlp | grep mysqld

를 입력해보면 

 

아래와같은 화면이 나올텐데 127.0.0.1:3306 라고 적혀있는 부분은 Local Address 즉 서버 내의 IP localhost이며

0.0.0.0:*는 Foreign Address 네트워크로 연결이 이루어져있다 현재상태로 외부에서 접근하려고하면 Connection 오류만 뜰것이다.

 

이렇게... Connection refused:connect 오류가 뜬다.

 

그렇기 때문에 우리는 외부 접속이라 Local Address IP를 0.0.0.0으로 모든 IP허용할수있음 으로 변경시켜주어야하는데 그 방법을 알기전에 우분투에서 사용할수있고 굉장히 보기좋은 text편집기 nano를 설치한다.

 

sudo apt-get install nano

 설치가 완료되었으면 다시 IP 허용하러 가면된다.

 

cd /etc/mysql/mysql.conf.d/

위 명령어를 입력해서 mysqld 설정파일이 있는 경로로 접근한다.( *만약 여기에 없다면* )

sudo nano /etc/mysql/my.cnf

*에들어가서*

*mysql.conf.d 저 아래에 경로로 들어가면됩니다!*

 

경로를 어떤방식이든 접근하였다면

sudo nano mysqld.cnf

위 명령어를 입력해서 bind-address를 수정하면되는데 마우스휠은 먹히지 않으니 방향키로 쭉내리면 찾을수있습니다!

그러고 아래 사진과같이 bind-address만 바꿔주시면됩니다!

 

ctrl + s 를 눌러서 저장하고 ctrl + x를 누르면 나올수 있습니다!!

 

 

변경된 값을 적용하기 위해서 mysql을 리부팅할건데 아래 명령어를 입력하면됩니다!

 

재시작이 되었다면 아까 봤던 명령어로 Local Address가 변경되었는지 확인해야합니다!

sudo netstat -ntlp | grep mysqld

 

위 명령어를 입력한 후 아래와 같은 상태로 변경된것을 확인할 수 있을겁니다!!!!

 

 

 

이제 정말 끝이 다왔습니다. DBeaver에 들어가셔서

 

새 데이터 베이스에 연결하기를 누르고

 

 

mysql을 클릭해줍니다!

 

그리고 기본 setting 화면이 뜰텐데 잠시 멈추고 다시 Ubuntu로 돌아가서 ifconfig를 입력하여 

이런 화면이뜰텐데 inet 옆에 부분이 지금 WSL2 가 가지고있는 IP입니다 저 IP를 가지고와서 

Main 설정을 하고(바로 완료하시면 안됩니다!!!!!!!!)

 

만약 바로 완료를 누르게되면 아래와 같은 오류가 뜨게될텐데 해당오류는 Mysql 8.x 대이상 버전부터

allowPublickeyRetrieval를 true설정해 주지않으면 오류가 발생한다고합니다. 말그대로 공개키 검색허용을 하지 않겠다는 겁니다.

그렇기 때문에 우리는 Driver properties에서 allPublicKeyRetrival을 true로 설정하고 완료를 눌러주시면

 

 

 

이렇게 완벽히 성공하였습니다!!!!

 

 

고생하셨습니다!!!! 잘 이용하시면 될것같아요

반응형

'Linux > Ubuntu' 카테고리의 다른 글

WSL2 에서 Ubuntu에있는 Mysql Gui(DBeaver)로 연결하기(외부접속)  (2) 2021.09.09
WSL이란  (3) 2021.09.08

태그

, , , ,

댓글2

  • Favicon of https://shanepark.tistory.com BlogIcon Shane Park 2021.09.09 18:00 신고

    DB를 wsl 안에다가 띄운건가요? 할렐루야.! docker를 사용하는건 어떨까요?! 고생하셨습니다 집념이 여기까지 느껴집니다.
    답글

    • Favicon of https://sac4686.tistory.com BlogIcon chief_sac 2021.09.09 18:17 신고

      docker에 대한 명확한 정의를 이해하지 못해서 그전에 wsl에 먼저 깔아봤습니다. 참고로 wsl 우분투에서 ip를 열어주지 않더라도 localhost로도 그냥 접근이 가능한데 cloud 컴퓨터에 접근한다는 느낌으로 실험하였습니다!