- 执行任何sql语句报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
这是第一次进入mysql,提醒你修改密码。
执行命令
vim /etc/my.cnf
打开mysql配置文件
在文件最后加上
skip-grant-tables
保存退出,重启mysql
我的重启命令是
systemctl restart mysqld.service
还有的重启命令是:
/etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart)
然后执行执行命令
mysql -u root -p
直接回车,进入mysql修改密码
修改密码的命令为
use mysql;
update user set password=password("新密码") where user="root";
当我执行到这一句的时候又报了错
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
原来是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
所以修改命令为
update user set authentication_string=password("新密码") where user="root";
但是紧接着又报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这个错误指的是,你设置的新密码不符合密码安全策略。
可以通过命令
show variables like 'validate_password%';
去查看密码策略
看了策略之后如果嫌麻烦,就修改密码策略
执行命令:
set global validate_password_policy=LOW;
这一句代码的意思是,该密码策略为只验证密码长度,默认为8
修改密码长度改为4位
set global validate_password_length=4;
最后执行命令
update user set authentication_string=password("新密码") where user="root";
flush privileges;
quit
重新打开my.cnf文件删除skip-grant-tables,并重启mysql。
通过
mysql -u root -p
输入密码,进入数据库
- 然后我想通过navicat连接mysql的时候,又出问题了。
报错Host ‘XXX’ is not allowed to connect to this MySQL server
好像不允许远程链接,所以要开放远程权限。
开放步骤为
进入数据库
mysql -u root -p
use mysql;
update user set host='%' where user='root';
flush privileges;
查看效果
select host from user where user='root';
然后通过navicat连接