Docker Desktop安装了mysql5.7,忘记数据库密码,怎么重置? 亲测有效
使用场景
当在 Docker 中运行的 MySQL 5.7 忘记密码时,可通过本教程重置密码。
操作步骤
1. 停止 MySQL 容器
docker stop your_mysql_container_name
注意:替换
your_mysql_container_name为你的实际容器名称
2. 启动临时容器(跳过权限验证)
docker run -d --name mysql_temp -v your_mysql_data_volume:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 mysqld --skip-grant-tables
3. 进入容器并重置密码
docker exec -it mysql_temp mysql -u root
在 MySQL 命令行执行:
sql -- 刷新权限 FLUSH PRIVILEGES;
-- 重置密码(任选一种方式) -- 方式1: UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
-- 方式2: ALTER USER 'root'@'%' IDENTIFIED BY 'new_password'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-- 完成操作
FLUSH PRIVILEGES;
EXIT;
4. 恢复原容器
清理临时容器
docker stop mysql_temp
docker rm mysql_temp
重启原容器
docker start your_mysql_container_name
验证新密码
docker exec -it your_mysql_container_name mysql -u root -p
输入刚设置的新密码测试连接
常见问题
问题1:PASSWORD() 函数不可用
sql UPDATE mysql.user SET authentication_string='' WHERE User='root'; FLUSH PRIVILEGES; ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
问题2:找不到数据卷
docker volume ls # 查看所有卷 docker inspect volume_name # 查看卷详情
问题3:容器启动失败
docker logs your_mysql_container_name # 查看日志
预防建议
- 启动容器时明确记录密码:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=your_password -d mysql:5.7 - 使用环境变量文件管理密码:
echo "MYSQL_ROOT_PASSWORD=your_password" > .mysql.env docker run --env-file .mysql.env -d mysql:5.7
注意事项
- 本操作不会丢失原有数据
- 密码复杂度建议至少8位,包含大小写字母和数字
- 生产环境建议定期更换密码

浙公网安备 33010602011771号