问题:Mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)
出现情景:使用navicat连接出现1130错误,然后直接ssh服务器连接使用mysql数据库出现28000错误
可能原因:一、密码错误,(但是我一直使用,估计被黑了改掉,因为之前一直连的)
二、IP权限访问(解决方法参考:https://blog.csdn.net/fan_lulu/article/details/82081876)
解决方法:
(因为我这里是密码错误,所以一下是针对原因一的)
方法一:
# /etc/init.d/mysqld stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
(mysql5.7的改为:update user set authentication_string=password('123') where user='root';)
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysqld restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
方法二:
直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:
# mysql -udebian-sys-maint -p
Enter password: <输入[client]节的密码>
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
(mysql5.7的改为:update user set authentication_string=password('123') where user='root';)
mysql> FLUSH PRIVILEGES;
mysql> quit
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
方法三:
# mysql -uroot -p
Enter password: <输入/etc/mysql/debian.cnf文件中[client]节提供的密码>
至此,困惑多时的问题解决了!
注意:
5.7 版本password 字段改成authentication_string password函数还是原来的password函数
mysql> update user set authentication_string=password('123') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
最后提醒:
不要设置过于简单的密码。