mysql skip-grant-tables my.cnf_Mysql Centos下忘记密码配置skip-grant-tables依然报错问题

时间: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.service

mysqld.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


版权声明:本文为weixin_42523975原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。