dbeaver EC2 Mysql 연결 오류 - 에러메시지별 해결방법

나우리·2024년 3월 3일

dbeaver란?

  • Workbench와 유사한 DB관리를 위한 미들웨어
  • Workbench 사용하려 했으나, 소노마 맥에서는 실행이 안되는 에러로 (다운그레이드 버전을 사용해도 답이 안나왔음) MAC에서 구동되는 프로그램을 찾다가 Dbeaver 발견했다.
  • 자바/이클립스 기반으로 개발되어 윈도우, 리눅스, MAC 구동 가능
  • Community Edition은 라이센스 무료

에러메시지로 문제 해결 과정

dbeaver로 Mysql서버(아마존 EC2) 연결 오류 메시지별 해결 방식

아마존에서 EC2라는 서버 한 대를 빌려서 홈페이지용 DB를 만들어보는 공부를 하고 있었는데,
서버 연결이 잘 안됐다.

public key Retrieval is not allowed.

driver properties에서 public key Retrieval 옵션을 false 에서 true로 변경하고 실행하기

dbeaver connection timeout

Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. 
The driver has not received any packets from the server.
  1. 호스트가 실행되고 있지 않은 경우 -> 서버 실행
  2. 방화벽(보안설정)이 열려있지 않은 경우
    -EC2 인바운드 규칙편집
    -> 3306포트 mysql/aurora 접속 가능자 0.0.0.0 (또는 현재 본인 IP로 설정)
    -> 그래도 안된다. sql 서버 접근 가능 유저 정보 확인
    (1. 사용자 비밀번호가 설정되어있지 않은 경우 2.접근하고자 하는 유저가 권한이 없는 경우 등)

일반접속말고 ssh 접속도 시도해보고, 로컬호스트 주소가 아닌 프라이빗 주소도 넣어보고(이건 아니었음)
하다가 이런 에러메시지가 나왔다.

Access denied for user ‘00’ @ ‘00’ (using password:YES)

해당 유저에게는 열려있지 않다는 것으로 sql서버로 접속 후 다음과 같은 코드들을 실행

sudo mysql -u root -p 
select user, host, plugin from user; #(플러그인체크)

#결과 확인, 플러그인 체크

root 계정의 플러그인이 비밀번호가 아니라 mysql_native_password 이 아닌,
caching_sha2_password로 되어있어서 비밀번호가 없었음에도 sql 접속이 막혀있었다고 판단,

USE mysql;
update user set plugin='mysql_native_password' where user='root';

플러그인을 다시 패스워드로 바꿔주었다.
이후에도 똑같은 에러가 나와서 이번에는 권한도 제대로 부여했다.

grant all privileges on *.* to '아이디'@'localhost';
#특정 사용자에게 전 권한 부여
grant all privileges on DB명.* to '아이디'@'localhost';
#특정 사용자에게 특정 DB접근권한 부여
FLUSH PRIVILEGES;
(재시동)

비밀번호가 없어도 접속 에러가 날 수 있다기에 재설정도 했다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234원하는비밀번호';

그럼에도 에러가 똑같이 Access denied for user 'root'@'특정ip' (using password: YES)

EC2 가상환경과 내 IP주소가 다름을 인지하고,
EC2내 IP(로컬호스트)에서만 접속을 허용하고 있지 않는지 체크할 필요가 있었다.
한마디로 로컬 호스트로 연결허용 계정을 사용하면 안되는 것이었다...
(막상 연결하고자 하는 디비버는 가상 컴퓨터 바깥에 있었다.)

select user, host, plugin from user; #호스트 재확인
create user '계정명'@'%' identified by 'password'; #'%' 모든 IP 접근 가능 호스트 생성
grant all privileges on *.* to '계정명'@'%'; #권한부여
flush privileges; #재시작

요약

  1. public key Retrieval 옵션을 false 에서 true로 변경하고 실행하기
  2. EC2 서버 자체가 열려있지 않거나, 보안설정에 문제가 있을 경우 => 해당 콘솔에서 확인
  3. MYSQL DB USER 문제일 경우
    -sudo mysql -u root -p #루트 권한으로 접속
    select user, host, plugin from user; #(플러그인체크)
    1) host의 문제 - 접속 가능 호스트 IP 체크하고 제대로 부여하기
    2) plugin의 문제 - caching_sha2_password를 mysql_native_password로 바꿔주기
    3) user의 문제 - 비밀번호 설정하기, 권한 부여하기

내가 겪은 케이스를 정리하고, 해법을 구글링해서 정리해본 거라 100% 확신은 못하지만,
이런 에러 메시지를 확인 -> 이렇게 방법을 찾아서 해결해서 되었다고 참고해주시면 좋을 듯하다.
개인적으로 마지막 호스트의 경우 정말 내가 멍청해서 다른 모든 에러방법을 찾아내고 난 뒤에 찾아본 거라,
그것만 해결했어도 연결이 되었을지도 모르겠다ㅠㅠㅠㅠ (먼저 체크해보시길 바란다.)

profile
왕초보 개발일지

0개의 댓글