系统版本:CentOS Linux release 7.7.1908 (Core)
mysql版本: 5.6.47 MySQL Community Server (GPL)
一、linux系统下MySQL忘记密码解决方案
1.停止mysql服务进程
service mysqld stop
2.编辑MySQL的配置文件my.cnf
vim /etc/my.cnf
skip-grant-tables
3.重启MySQL服务
systemctl restart mysqld
4.登录数据库,执行以下命令
mysql -u root
use mysql;
update user set password=password("test12") where user="root";
flush privileges;
# 注意:test12 这里是我设置的密码,在这里自定义即可。
5.重启数据库(必须重启)
systemctl restart mysqld
6.使用新密码登录
mysql -u root -ptest12
注意:-p后面跟密码不要加空格,否则按照表查,会报错
重启mysql提示MySQL server PID file could not be found!
Starting MySQL...The server quit without updating PID file (/usr/local/mysql/data/rekfan.pid).
我是这样做的,先看下是不是有这个进程,然后结束,再重启,代码:
ps -ef|grep mysqld
kill -9
进程号
其他可能
1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限
解决方法:给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!
2.可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的!http://blog.rekfan.com/?p=186
4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
5.skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
6.错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限
7.默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。