DBMS & NoSQL MySQL Current: MySQL ERROR 1698 (28000): 에러 해결 MySQL ERROR 1698 (28000): 에러 해결 WSL 2를 설치하고 우분투 20 에 MySQL 을 깔았는데 root 계정으로는 MySQL root 로 연결이 가능한데 일반 사용자로는 다음 에러를 내며 연결이 되지 않았습니다. ERROR 1698 (28000): Access denied for user 'root'@'localhost' CODE 구글링해보니 MySQL root 는 인증 방식을 Local 에 있는 Unix Domain socket 으로 하기때문에 root 권한이 있어야만 연결이 가능하다고 합니다.운영 서버는 저런 정책을 갖는게 맞겠지만 로컬이나 개발용은 불편하니 다음 방법으로 인증 방식을 변경하면 됩니다.root 사용자로 mysql 에 연결합니다. sudo mysql -u root -p mysql CODE 사용자별 Auth plugin 을 조회합니다. 인증 플러그인 조회 SELECT User, Host, plugin FROM mysql.user; SQL +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | debian-sys-maint | localhost | caching_sha2_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | auth_socket | +------------------+-----------+-----------------------+ CODE root 사용자는 auth_socket 인증 방식을 사용하는 것을 볼 수 있습니다. 이것을 caching_sha2_password 방식으로 변경합니다. UPDATE user SET plugin='caching_sha2_password' WHERE User='root'; CODE 예전 버전은 auth plugin 이 mysql_native_password 방식일 수 있으며 그럴 경우 아래 쿼리와 같이 mysql_native_password 로 설정하세요. 잘못 설정할 경우 root 로도 로그인이 불가능합니다. UPDATE user SET plugin='mysql_native_password' WHERE User='root'; CODE root 암호가 설정되지 않았다면 설정해 줍니다. SET PASSWORD FOR 'root'@'localhost' = 'qwert123'; CODE 변경된 정책을 반영해 줍니다. FLUSH PRIVILEGES; CODE 정책 변경이므로 MySQL 을 재구동합니다. sudo systemctl restart mysqld CODE 이제 일반 사용자로 MySQL root 권한으로 연결되는지 확인합니다. mysql -u root -p mysql CODE 같이 보기MySQL 8 암호 정책(Password policy) 확인 및 수정하기MySQL root password reset 하기Refhttps://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhosthttps://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/socket-pluggable-authentication.html mysql-trouble-shooting ×