ubuntu같은 일부 리눅스 시스템에서 mysql을 설치하고,
$ mysql -u root -p 으로 로그인 시도를 했더니..!mysql ERROR 1698 (28000): Access denied for user 'root'@'localhost'
라는 에러가 발생한다.
구글링을 해보았더니 기본적으로 초기설정되어있는 mysql의 root 계정의 패스워드 타입때문인데 이 타입을 변경해주면 해결되는 문제라고 한다.
참고한 블로그 내용을 정리해보았다.
$ sudo mysql -u root # sudo를 사용하여 root계정으로 mysql에 접속한다.
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
root
의 plugin
이 auth_socket
으로 되어있는데 이값을 mysql_native_password
으로 변경해주면 된다
mysql> update user set plugin='mysql_native_password' where user='root';
mysql> flush privileges;
mysql> select user, host, plugin from user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | mysql_native_password |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
mysql> exit;
아래와같이 입력해준후, mysql -u(계정 접근) [계정명] -p(비밀번호 입력)
$ mysql -u root -p
mysql에서 아래와같이 명령어를 입력해주면 MySQL root 계정 비밀번호 세팅이 된다.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[yourPassword]';
[yourPassword]
에는 원하는 비밀번호를 입력하면된다. 이제 클라이언트에 접속할때 password는 [yourPassword]
를 입력해주면 된다..!ㄷ