我的mysql版本是5.7.35,平台是linux
这是一个悲伤的故事,我忘记了我的mysql密码,然后试过了网上的大多数解决方案,发现网上的解决方案可能是版本太老,又或是描述有误,都以失败告终,在我的不懈探索下,终于解决了。
- 修改my.cnf文件
- 如果你不知道my.cnf文件在哪里,你可以
my@yun:~$ locate my.cnf /etc/alternatives/my.cnf /etc/mysql/my.cnf /etc/mysql/my.cnf.fallback /var/lib/dpkg/alternatives/my.cnf my@yun:~$
- 修改my.cnf文件
打开
修改,你只需要加上skip-grant-tables即可,但网上大多数不会说明是在[mysqld]选项下,如果没有[mysqld]你需要手动添加my@yun:~$ sudo vim /etc/mysql/my.cnf
重启mysql服务,但网上很多都是service mysqld restart,起码就目前我的mysql版本来说他是错的[mysqld] skip-grant-tables
my@yun:~$ sudo service mysql restart my@yun:~$
- 如果你不知道my.cnf文件在哪里,你可以
- 至此你已经成功修改了配置文件并且重启了mysql服务,接下来应该修改mysql密码
登录mysql
切换数据库my@yun:~$ mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.35-0ubuntu0.18.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
修改mysql密码mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql>
mysql> update user set plugin='mysql_native_password' where user='root'; Query OK, 0 rows affected (0.01 sec) Rows matched: 2 Changed: 0 Warnings: 0 mysql> update user set authentication_string=PASSWORD('你的密码') where user='root'; Query OK, 0 rows affected, 1 warning (0.01 sec) Rows matched: 2 Changed: 0 Warnings: 1 mysql>
- 至此修改成功,恢复配置文件
注释掉相关的操作
重启mysql服务#[mysqld] #skip-grant-tables
使用密码登录mysqlmy@yun:~$ sudo service mysql restart my@yun:~$
my@yun:~$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.35-0ubuntu0.18.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
- 至此密码修改成功