관리 메뉴

나만을 위한 블로그

[AWS] Ubuntu 18.04 EC2 phpmyadmin 로그인 시 #1698 - Access denied for user 'root'@'localhost' 에러 해결 본문

AWS

[AWS] Ubuntu 18.04 EC2 phpmyadmin 로그인 시 #1698 - Access denied for user 'root'@'localhost' 에러 해결

참깨빵위에참깨빵 2020. 4. 24. 14:18
728x90
반응형

참고한 사이트 : https://extrememanual.net/33257

 

phpMyAdmin root 접속 불가 해결 방법 - 익스트림 매뉴얼

#1698 - Access denied for user 'root'@'localhost' mysqli_real_connect(): (HY000/1698) : Access denied for user 'root'@'localhost' MySQL 또는 MariaDB를 설치한 다음

extrememanual.net

MySQL 혹은 마리아DB를 설치하고 phpmyadmin 설치 후 웹에서 접속하려 했더니 이 에러가 떴다.

검색해보니 위 블로그에서 MySQL 5.7, 마리아DB 10.1 이후 버전부터는 보안상 루트 계정은 터미널에서만 접속 가능하며, root를 제외한 사용자 계정으로 phpmyadmin에 접속할 수 있다.

그래서 MySQL에서 새로 사용자를 만든 다음 권한을 줘서 root 계정같은 계정으로 만들어 phpmyadmin 접속에 사용해야 한다.

 

XShell, Putty 등 자신이 사용할 수 있는 툴로 AWS EC2에 접속한다.

그 다음 MySQL 터미널에 접속해서 sudo su를 쳐서 관리자 권한을 획득해야 한다.

그리고 mysql -uroot -p를 입력해 root 계정으로 접속한다. 비밀번호가 아직 없다면 mysql -uroot만 쳐도 된다.

그 다음 아래 쿼리문을 입력한다.

 

create user '아이디'@'%' identified by '비밀번호';

grant all privileges on *.* to '아이디'@'%';

 

첫 문장은 아이디와 비밀번호를 user 테이블에 새로 추가하는 것이다. 2번째 문장은 만든 아이디에 모든 권한을 주는 쿼리문이다.

예를 들어 아이디를 aaa, 비밀번호를 bbb로 만든다 하면 이렇게 될 것이다.

 

create user 'aaa'@'%' identified by 'bbb';

grant all privileges on *.* to 'aaa'@'%';

 

각 쿼리문의 맨 뒤에 있는 세미콜론(;)은 꼭 써줘야 한다. 터미널 환경에서 이걸 쓰지 않으면 아직 뒤에 쿼리문이 더 있는 줄 알고 개행되서 ->가 보이고 추가적으로 입력할 수 있는 커서가 생긴다. 세미콜론을 쓰고 엔터를 쳐야 쿼리문이 실행되니 주의하자.

 

위의 두 쿼리문을 실행하며 Query OK, 0 rows affected (0.00 sec) 라는 문장이 각 쿼리문마다 나왔다면 제대로 된 것이다.

다시 phpmyadmin 로그인 화면으로 이동해 MySQL 터미널에서 생성한 아이디와 비밀번호를 입력해준다.

아이디를 aaa, 비밀번호를 bbb로 만들었다면 당연히 aaa와 bbb를 각각 ID, PW 부분에 치고 로그인 버튼을 누르면 된다.

이렇게 하면 정상적으로 phpmyadmin에 접속되는 걸 볼 수 있다.

내 경우는 기존에 만들었던 DB와 테이블, 그 안의 데이터들을 조회하고 여기에 추가적인 작업들을 할 수 있는 걸 확인했다.

반응형
Comments