原因:之前自己服务器上的MySQL很久不用了,现在突然需要用到,但是忘记密码了,所以写一下解决方案,供自己和各位做个参考!
解决办法
1、检查mysql服务是否启动,如果启动,关闭mysql服务
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sun 2020-10-11 07:59:51 EDT; 1s ago
2、修改mysql的配置文件my.conf
[root@localhost ~]# vi /etc/my.cnf
## 在 [mysqld] 下添加最后一行代码
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
skip-grant-tables ## 添加此行代码即可!
== > > wq 保存退出
3、启动数据库
[root@localhost ~]# systemctl start mysqld
4、进入MySQL数据库
[root@localhost ~]# mysql -u root -p
Enter password: ## 不需要输入密码,直接回车!!!
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('password') where user='root';
## password替换成你想要的密码
mysql> exit;
改完之后退出MySQL即可
5、删掉之前添加的配置文件
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
skip-grant-tables ## 现在删掉此行代码即可!
== >> wq 保存退出
[root@localhost ~]# systemctl restart mysqld ## 在重启服务器
到这里就更改完成了,随后只需要正常登录MySQL即可。
注意更改完配置文件之后,需要重新启动MySQL,让配置文件生效!