为了找回MySQL管理员root密码,有以下3个妙招可供选择:
妙招一:使用配置文件重置密码
- 停止MySQL服务:
sudo systemctl stop mysqld
- 创建一个文件
mysqld.cnf
,并添加以下内容:
[mysql]
user=root
pid-file=/var/run/mysqld/mysqld.pid
skip-grant-tables
- 启动MySQL服务:
sudo systemctl start mysqld
- 使用mysql客户端连接到MySQL服务器:
mysql -u root
- 修改root用户的密码:
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
- 移除
mysqld.cnf
文件,重新启动MySQL服务:
sudo systemctl stop mysqld
sudo rm /etc/my.cnf.d/mysqld.cnf
sudo systemctl start mysqld
妙招二:使用安全模式重置密码
- 停止MySQL服务:
sudo systemctl stop mysqld
- 启动MySQL服务,并进入安全模式:
sudo mysqld_safe --skip-grant-tables &
- 使用mysql客户端连接到MySQL服务器:
mysql -u root
- 修改root用户的密码:
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
- 退出MySQL客户端,并重启MySQL服务器:
QUIT;
sudo systemctl stop mysqld
sudo systemctl start mysqld
妙招三:使用init脚本重置密码
- 停止MySQL服务:
sudo systemctl stop mysqld
- 修改MySQL服务的启动参数,添加
--skip-grant-tables
选项,开启不需要验证即可登陆的模式:
sudo vim /usr/lib/systemd/system/mysqld.service
[Service]
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS --skip-grant-tables $ARGS
- 加载修改后的服务文件:
sudo systemctl daemon-reload
- 启动MySQL服务,并使用mysql客户端连接到MySQL服务器:
sudo systemctl start mysqld
mysql -u root
- 修改root用户的密码:
UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
- 恢复MySQL服务启动参数,重启MySQL服务,完成修改:
sudo vim /usr/lib/systemd/system/mysqld.service
[Service]
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $ARGS
sudo systemctl daemon-reload
sudo systemctl restart mysqld
其中,妙招一和妙招二是比较常用的方法,妙招三则相对复杂并且需要重启MySQL服务。根据实际情况选择妙招。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:找回MySQL管理员root密码的3个妙招 - Python技术站