如果不是粗心,那么可能是密码错误,也可能是修改远程访问错误导致不能在本地访问。
进入mysql
-
关闭mysql的验证:
修改配置文件
/etc/my.cnf,
在下面加入一行skip-grant-tables=1
-
重启mysql服务:
systemctl restart mysqld
-
使用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
这样就解决了密码和登录权限的问题。