$ mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[yourPassword]';
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 값을 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 |
+------------------+-----------------------+
이후 exit; 명령어로 접속을 종료할 수 있다.