ubuntu에서 mysql의 root계정이 로그인 안될때.
참고: https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost
ubuntu같은 일부 리눅스 시스템에서 mysql을 설치하고
$ mysql -u root -p 으로 로그인 시도를하면
'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;
Bye
이제 다시 root로 접속해보면 잘 접속이 될 것이다.
$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)
...