如何在MySQL 8中重置root密码

杀马特。学长 韩版系。学妹 提交于 2020-02-26 12:35:42

使用mysql -uroot -p,然后输入密码登录mysql时,出现了如下错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

一般这个错误是由密码错误引起,解决的办法自然就是重置密码

解决方案如下:

1.停止mysql数据库:

systemctl stop mysqld

2.用以下命令启动MySQL,以不检查权限的方式启动:

mysqld --skip-grant-tables &

此时又报了一个错误:

2020-01-30T12:56:04.313195Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 14214                                       [20:56:04]
2020-01-30T12:56:04.314429Z 0 [ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
2020-01-30T12:56:04.314465Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-01-30T12:56:04.314565Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

执行命令:

mysqld --user=root --skip-grant-tables &

2020-01-30T12:57:00.762096Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test          [20:57:00]
2020-01-30T12:57:00.762156Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 14230
2020-01-30T12:57:00.764479Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2020-01-30T12:57:00.764489Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2020-01-30T12:57:00.764672Z 0 [Warning] [MY-010122] [Server] One can only use the --user switch if running as root

权限不够 +  
2020-01-30T12:57:00.764685Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/var/lib/mysql/' (OS errno: 13 - Permission denied)
2020-01-30T12:57:00.764764Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-01-30T12:57:00.764861Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

[1]  + 14230 exit 1     mysqld --user=root --skip-grant-tables
 

3.登录mysql:mysql -uroot或mysql

4.更新root密码

mysql5.7以下版本:UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root';

mysql8.0版本:UPDATE mysql.user SET authentication_string='123456' WHERE user='root';

5.刷新权限:

flush privileges;

6.退出mysql:exit或quit

7.使用root用户重新登录mysql

mysql -uroot -p

Enter password:<输入新设的密码123456>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!