Published on

通过Docker重置MySQL密码

当我们在使用Docker运行MySQL时,有时会忘记root用户的密码。本文将介绍一种无需破坏数据即可重置密码的方法。

步骤1:停止正在运行的MySQL容器

首先,我们需要停止当前正在运行的MySQL容器:

docker stop docker-mysql-1

步骤2:使用临时容器重置密码

接下来,我们创建一个临时的MySQL容器,它将挂载原容器的数据卷,并跳过权限验证:

docker run -d --name mysql-reset --volumes-from docker-mysql-1 mysql:8.0.39 mysqld --skip-grant-tables
sleep 10

步骤3:重置密码为空

现在我们可以连接到临时容器并将root用户的密码重置为空:

docker exec -it mysql-reset mysql -u root -e "USE mysql; FLUSH PRIVILEGES; ALTER USER 'root'@'%' IDENTIFIED BY '';"

步骤4:清理临时容器

完成密码重置后,停止并删除临时容器:

docker stop mysql-reset
docker rm mysql-reset

步骤5:重新启动MySQL服务

现在可以重新启动原来的MySQL容器了:

docker start docker-mysql-1
sleep 10

步骤6:测试连接并设置新密码

验证我们现在可以使用空密码连接到MySQL:

docker exec -it docker-mysql-1 mysql -u root -e "SELECT 1;" && echo "✅ 现在可以使用空密码连接"

最后,设置一个新的安全密码:

docker exec -it docker-mysql-1 mysql -u root -e "ALTER USER 'root'@'%' IDENTIFIED BY 'infini_rag_flow';"

通过以上步骤,我们就成功地重置了Docker中MySQL的密码,而不会丢失任何数据。

THE END