Centos下修改mysql5.7密码的时候发现没有user表

Centos下修改mysql5.7密码的时候发现没有user表

今天离线安装了个mysql,结果发现输入密码进不去,因此我决定跳过密码登录,操作如下

1、修改 /etc/my.cnf:在 [mysqld] 下增加 skip-grant-tables 
2、重启 mysql:systemctl restart mysqld.service 
3、mysql -u root -p 然后直接回车进去
4、update user set password = password('123456') where user='root';

执行到第四步的时候发现出现问题了

ERROR 1046 (3D000): No database selected

What?没有user表这是怎么回事,然后搜了一下应该是初始化的时候没有对头,所以执行以下步骤即可出现user表

1、use mysql;
2、select * from user;

然后就出现user表了,继续修改密码:

1、update mysql.user set authentication_string=password('iviking') where user='root' ;
2、flush privileges; 
3、quit;
4、修改 /etc/my.cnf:在 [mysqld] 下删除skip-grant-tables 
5、重启 mysql:systemctl restart mysqld.service

然后就可以用自己的密码登录了,结果登录之后输入任何命令都是显示:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

于是上网搜了一下,感谢:https://www.cnblogs.com/benpao1314/p/11534696.html
解决1:
1、ALTER USER USER() IDENTIFIED BY 'root2019';
2、修改 /etc/my.cnf:在 [mysqld] 加上default_password_lifetime=0
3、重启mysql

解决2:
1、alter user root@localhost identified by "MYSQL_PASSWD",MYSQL_PASSWD 修改为你 设置的 MYSQL 密码 (此时可能说你的密码不满足你的密码策略,用这条设置一个稍微复杂一点的密码)
2、修改密码策略:SHOW VARIABLES LIKE 'validate_password%';
				set global validate_password_policy='low';
3、使用方法1修改你想要的密码
3、将一下内容写入到/etc/my.conf中[mysqld]下
				validate_password_policy=0
				validate_password_length=5

重启服务即可.

systemctl restart mysqld

然后再登录的时候就可以输入刚刚设置的密码了

猜你喜欢

转载自blog.csdn.net/qq_43535595/article/details/114363056