Mysql Centos下忘记密码配置skip-grant-tables依然报错问题

来源:互联网 发布:php array diff keys 编辑:程序博客网 时间:2024/06/05 23:54

时间:2017-07-12发布

环境:centos7

mysql版本:5.7

问题描述:不知什么原因,原来设置的mysql密码无效,无法用root用户登录系统,按照网上描述在 /etc/my.cnf文件中 添加一行“skip-grant-tables”,添加后启动报错,报错信息如下:

[root@localhost etc]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
Job for mysqld.service failed. See 'systemctl status mysqld.service' and 'journalctl -xn' for details.

[root@localhost etc]# systemctl status mysqld.servicemysqld.service - MySQL Server   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)   Active: failed (Result: start-limit) since 三 2017-07-12 17:30:28 CST; 14s ago     Docs: man:mysqld(8)           http://dev.mysql.com/doc/refman/en/using-systemd.html  Process: 5423 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)  Process: 5405 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 4903 (code=exited, status=0/SUCCESS)

以上报错信息基本看不出具体问题,需要去日志文件中查看 /var/log/mysqld.log,找到关键报错信息如下:

2017-07-12T10:46:35.634057Z 0 [ERROR] unknown variable 'validate_password=off'2017-07-12T10:46:35.634069Z 0 [ERROR] Aborting

错误信息提示:无法识别 validate_password,此句话是忽略密码策略时添加的,添加后没有直接报错,只是在此基础上又加上了 skip-grant-tables后报错

解决办法:删除掉validate_password所在行

分析原因:在skip-grant-tables约束下,密码策略已经无效,所以无法识别validate_password 字段,两者不能同时存在,可以在修改完密码后,删除skip-grant-tables,根据需要加上’validate_password=off’

ps:附上修改后的脚步命令
命令:
[mysqld]
skip-grant-tables
datadir=/var/lib/MySQL
socket=/var/lib/mysql/mysql.sock
3.重启mysql
service mysql restart
4.用户无密码登录
mysql -uroot -p (直接点击回车,密码为空)
5.选择数据库
use mysql;
6.修改root密码
update user set authentication_string=password(‘root’) where user=’root’;
7.执行
flush privileges;
8.退出
exit;
9.删除
去my.cnf 中删除行 skip-grant-tables
10.重启mysql
service mysqld restart

阅读全文
0 0
原创粉丝点击