MySQL忘记root密码解决方法

现在我们使用的mysql数据库分为两个版本了,一个是**mysql** ,一个是**mariadb**,两个版本的解决方案有些不同,我会在下面给与说明。

第一步

首先,我们需要打开my.cnf

vim /etc/my.cnf

在**[mysqld]**下添加skip-grant-tables,然后保存并退出

假如没有my.cnf这个文件的话,我们可以在 /etc/mysql/mysql.conf.d/mysqld.cnf 的 **[mysqld]**下添加skip-grant-tables,然后保存并退出

重启mysql服务器

systemctl restart mysql(mariadb)
或者
service mysql(mariadb) restart

第二步

此时,我们登录进入mysql的时候是不需要输入密码的,但是我们可以修改root密码,我们登录进去后,进入mysql库

[root@ub1 ~]$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu)
... ...
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> 

修改密码:

UPDATE user SET password=PASSWORD('your_new_passwd')WHERE User='root' ;

但是在mysql上没有password这个字段,但是有一个叫做authentication_string :

mysql> SELECT User,Host,Password FROM user;
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
mysql> SELECT User,Host,authentication_string FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | authentication_string                     |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *91A4592A144CD258480130DC9002C5D61E82238D |
+------------------+-----------+-------------------------------------------+
4 rows in set (0.01 sec)

所以我们在修改密码的时候将password字段改成authentication_string

mysql> UPDATE user SET authentication_string=PASSWORD('root')WHERE User='root';
Query OK, 0 rows affected, 1 warning (0.31 sec)
Rows matched: 1  Changed: 0  Warnings: 1

刷新:

mysql> flush privileges;

第三步

/etc/my.cnf中的skip-grant-tables注释掉(/etc/mysql/mysql.conf.d/mysqld.cnf)

重启:

systemctl restart mysql(mariadb)
或者
service mysql(mariadb) restart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值