mysql8.x 出现不能登录的情况(ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password:YS)

如果不是粗心,那么可能是密码错误,也可能是修改远程访问错误导致不能在本地访问。

进入mysql

  1. 关闭mysql的验证:

    修改配置文件 /etc/my.cnf,在下面加入一行skip-grant-tables=1

  2. 重启mysql服务:systemctl restart mysqld

  3. 使用root用户登录到mysql:mysql -u root

修改密码

使用命令:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

如果报错:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement.

使用flush privileges;

flush privileges; 命令本质上的作用是:将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。

如果报错: ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'

则是远程访问权限不正确,先选择数据库,查看一下再更改:

use mysql;
update user set host = 'localhost' where user ='root';
flush privileges;

在执行上面修改密码的命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

如果出现密码过于简单,不让修改密码的情况,ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,这是由于mysql8.0以上密码策略限制必须要大小写加数字特殊符号。

如果想要使用简单密码,参考这篇文章:https://blog.csdn.net/danykk/article/details/80137223

这样就解决了密码和登录权限的问题。

上一篇:数据库学习之路(一)MySQL8安装


下一篇:Linux下安装mysql8(tar包)