MySQL8.0 重置密码
极客学长 2022-10-18 0
MySQL
MySQL8.0 以后为了安全,在安装数据库的时候没有设置密码环节了,而是在初次启动的时候在 /var/log/mysql/error.log
日志文件中生成一个随机的临时密码。如果你不小心把日志文件删除了或者忘记了密码,我们就需要进行重置密码操作。
# 01-原理
我们需要知道的是密码存储在 mysql
数据库的 users
表中。 我们只需要绕过 MySQL 身份认证,登录到服务端然后更新 user
表记录即可。
# 02-跳过验证启动
首先停止现有的 MySQL 服务:
sudo service mysql stop
更改配置文档 /etc/mysql/mysql.conf.d/mysqld.cnf
在文档末尾添加 skip-grant-tables
配置:
max_binlog_size = 100M
# binlog_do_db = include_database_name
# binlog_ignore_db = include_database_name
#
#
skip-grant-tables
然后启动 MySQL 服务:
sudo service mysql start
# 03-重置密码
现在我们可以直接在终端输入 mysql
命令登录服务端了。
我们需要将
user
表的auth_socket
插件换成mysql_native_password
, 否则待会执行更新 password 语句的时候会报错Plugin 'auth_socket' is not loaded
:update mysql.user set `plugin`='mysql_native_password' WHERE `user`='root' AND `host`='localhost'
然后将 root 密码置空:
update user set authentication_string='' where user='root';
用空密码登录之后,更改 root 用户密码:
mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
还原配置,删除
skip-grant-tables
选项,然后重启 MySQL 服务:sudo service mysql stop sudo service mysql start
重启服务之后,你就可以使用新密码登录了。
本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01