LoongLee's blog

MySQL重置密码

MySQL重置密码

来源

原始文档: mysql 重置密码.18913525.md

核心内容

MySQL/MariaDB 数据库 root 密码重置方法。

方法一: 跳过权限表启动

# 1. 停止MySQL服务
sudo systemctl stop mysql

# 2. 以安全模式启动
sudo mysqld_safe --skip-grant-tables --skip-networking &

# 3. 无密码登录
mysql -u root

# 4. 重置密码(MySQL 5.7+)
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

# 或(MySQL 5.6)
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;

# 5. 退出并重启服务
exit
sudo systemctl restart mysql

方法二: 使用init-file

# 1. 创建密码重置文件
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';" > /tmp/reset.sql

# 2. 使用init-file启动
sudo mysqld --init-file=/tmp/reset.sql &

# 3. 正常重启
sudo systemctl restart mysql

MariaDB 重置

# 停止服务
sudo systemctl stop mariadb

# 安全模式启动
sudo mysqld_safe --skip-grant-tables &

# 登录并修改
mysql -u root
USE mysql;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
FLUSH PRIVILEGES;
EXIT;

# 重启服务
sudo systemctl restart mariadb

关键要点

  • --skip-grant-tables 跳过权限验证,安全风险高
  • --skip-networking 禁用网络连接,增强安全性
  • MySQL 8.0 使用 caching_sha2_password 认证插件
  • 重置后务必正常重启服务

相关实体

  • MySQL - 关系型数据库
  • MariaDB - MySQL 分支
  • SQL - 结构化查询语言
  • 数据库管理 - DBA 操作