Mysql:ERROR 1698 (28000): Access denied for user 'root'@'localhost'

描述

  • 出现场景:这个问题一般出现在刚刚安装完mysql的时候
  • 出现原因:由于使用命令sudo apt-get install mysql安装时,并没有提示输入密码,则密码没有初始化,使用root用户登录自然失败.
  • 具体情况:
:~$ mysql -uroot -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

下面是解决问题的方法。

解决方法

  • 思路:既然密码没有初始化,那么直接使用默认密码登录就可以了。
  • 步骤如下:

1.使用cat命令查看默认用户名密码。

sudo cat /etc/mysql/debian.cnf 

展示出来的内容:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = HwPMmIAFg1GNU0OH
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = HwPMmIAFg1GNU0OH
socket   = /var/run/mysqld/mysqld.sock

2.使用默认用户名密码登录

mysql -udebian-sys-maint -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
……
mysql>

登录成功。
3.修改PLUGIN设置(出现这个问题的原因就在这)

UPDATE mysql.user SET authentication_string=PASSWORD('root'), PLUGIN='mysql_native_password' WHERE USER='root';

设置完成。
4.重启服务

/etc/init.d/mysql stop
/etc/init.d/mysql start

5.登录

mysql -uroot -p

此时就可以成功登陆了。

有时候mysql经常会出现一些稀奇古怪的问题,很多情况为了节省时间都是选择重装,附上重装过程。

  • 完全卸载
sudo rm /var/lib/mysql/ -R
sudo rm /etc/mysql/ -R
sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor
  • 安装
sudo apt-get update
sudo apt-get install mysql-server

完成操作。

结语

感谢您的阅读,欢迎指正博客中存在的问题,也可以跟我联系,一起进步,一起交流!

微信公众号:进击的程序狗
邮箱:roobtyan@outlook.com
个人博客:http://roobtyan.cn
扫描下面的二维码关注我吧,你将收获到意想不到的东西哟……
这里写图片描述

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

原文地址:https://www.cnblogs.com/roobtyan/p/9576693.html