博客主页
MySQL密码重置
MySQL密码重置

Author:

CC-star

©

Wordage:

共计 5131 字

needs:

约 2 分钟

Popular:

12 ℃

Created:

目 录

MySQL 密码重置教程

本教程适用于 MySQL 5.7+ 和 MySQL 8.0+,涵盖 Linux 服务器和 macOS 系统。


目录

  1. 确认 MySQL 版本和安装方式
  2. 停止 MySQL 服务
  3. 以安全模式启动 MySQL
  4. 重置密码
  5. 重启 MySQL 服务
  6. 验证新密码
  7. 常见问题排查

1. 确认 MySQL 版本和安装方式

# 查看 MySQL 版本
mysql --version

# 查看 MySQL 安装位置
which mysql

2. 停止 MySQL 服务

Linux (Ubuntu/Debian)

sudo systemctl stop mysql
# 或
sudo service mysql stop

Linux (CentOS/RHEL)

sudo systemctl stop mysqld
# 或
sudo service mysqld stop

macOS (Homebrew 安装)

brew services stop mysql

macOS (官方安装包)

sudo /usr/local/mysql/support-files/mysql.server stop

Docker

docker stop <容器名或ID>

3. 以安全模式启动 MySQL

安全模式会跳过权限验证,允许无密码登录。

Linux (Ubuntu/Debian/CentOS)

sudo mysqld_safe --skip-grant-tables &

如果 mysqld_safe 不在 PATH 中:

# Ubuntu/Debian
sudo /usr/sbin/mysqld --skip-grant-tables --user=mysql &

# CentOS/RHEL
sudo /usr/sbin/mysqld --skip-grant-tables --user=mysql &

macOS (官方安装包)

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

macOS (Homebrew)

/usr/local/opt/mysql/bin/mysqld_safe --skip-grant-tables &
# 或 (Apple Silicon)
/opt/homebrew/opt/mysql/bin/mysqld_safe --skip-grant-tables &

等待 5-10 秒让 MySQL 完全启动。


4. 重置密码

4.1 连接到 MySQL

mysql -u root

如果连接失败,尝试指定 socket:

# Linux
mysql -u root -S /var/run/mysqld/mysqld.sock

# macOS
mysql -u root -S /tmp/mysql.sock

4.2 执行密码重置命令

连接成功后,在 MySQL 命令行中执行:

MySQL 8.0+

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

MySQL 5.7

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';

MySQL 5.6 及更早版本

FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

4.3 退出 MySQL

EXIT;

5. 重启 MySQL 服务

首先停止安全模式的 MySQL:

sudo killall mysqld mysqld_safe
# 或
sudo pkill mysqld

然后正常启动 MySQL:

Linux (Ubuntu/Debian)

sudo systemctl start mysql

Linux (CentOS/RHEL)

sudo systemctl start mysqld

macOS (Homebrew)

brew services start mysql

macOS (官方安装包)

sudo /usr/local/mysql/support-files/mysql.server start

6. 验证新密码

mysql -u root -p

输入新密码,如果成功登录则密码重置完成。


7. 常见问题排查

问题 1:Can't connect to server (2002 错误)

原因:MySQL 服务未运行或未监听正确的端口/socket。

解决方案

# 检查 MySQL 是否运行
ps aux | grep mysql

# 检查端口监听
netstat -tlnp | grep 3306
# 或
ss -tlnp | grep 3306

# 检查 socket 文件
ls -la /var/run/mysqld/mysqld.sock  # Linux
ls -la /tmp/mysql.sock               # macOS

问题 2:Access denied (1045 错误)

原因:密码错误或权限问题。

解决方案:确保在 --skip-grant-tables 模式下先执行 FLUSH PRIVILEGES;

问题 3:mysqld_safe 找不到

解决方案

# 查找 mysqld_safe 位置
find / -name "mysqld_safe" 2>/dev/null

# 或直接使用 mysqld
sudo mysqld --skip-grant-tables --user=mysql &

问题 4:MySQL 启动失败

解决方案:查看错误日志

# Linux
sudo cat /var/log/mysql/error.log | tail -50
# 或
sudo journalctl -u mysql --no-pager | tail -50

# macOS
sudo cat /usr/local/mysql/data/*.err | tail -50

问题 5:忘记 root 主机限制

如果 root 用户被限制了主机访问,可以同时重置多个主机的密码:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '新密码';
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';  -- 允许任意主机连接

附录:安全建议

  1. 使用强密码:至少 12 位,包含大小写字母、数字和特殊字符
  2. 限制 root 远程访问:生产环境避免使用 'root'@'%'
  3. 定期更换密码:建议每 90 天更换一次
  4. 使用密码管理器:避免遗忘密码

快速参考命令

操作Ubuntu/DebianCentOS/RHELmacOS (Homebrew)macOS (官方)
停止服务sudo systemctl stop mysqlsudo systemctl stop mysqldbrew services stop mysqlsudo /usr/local/mysql/support-files/mysql.server stop
启动服务sudo systemctl start mysqlsudo systemctl start mysqldbrew services start mysqlsudo /usr/local/mysql/support-files/mysql.server start
查看状态sudo systemctl status mysqlsudo systemctl status mysqldbrew services list`ps aux \grep mysql`
安全模式sudo mysqld_safe --skip-grant-tables &同左同左sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
文章二维码
MySQL密码重置
共计 0 条评论,点此发表评论
博客主页 数据猫 漫游于星空的数据猫
技术支持 CC 数据猫. 2026
打赏图
打赏博主
欢迎
欢迎
欢迎访问数据猫
搜 索
足 迹
分 类
  • 简文
  • 技术
  • 娱乐