Docker 如何查看 MySQL 密码

问题描述

在使用 Docker 部署 MySQL 数据库时,我们可能会忘记设置密码或者忘记了设置的密码是什么,导致无法登录到数据库。这时我们需要一种方法来查看或者重置 MySQL 的密码。

解决方案

下面将介绍两种方法来查看 Docker 中 MySQL 的密码。

方法一:通过容器日志查看密码

Docker 在启动 MySQL 容器时,会将初始密码输出到容器的日志中。我们可以通过查看容器日志的方式来获取密码。

首先,使用以下命令启动 MySQL 容器:

docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password mysql:latest

其中 your_password 是你为 MySQL 设置的密码。

然后,查看容器的日志:

docker logs mysql-container

在日志中,你会看到如下输出:

...
[Entrypoint] MySQL init process done. Ready for start up.

2021-01-01T01:23:45.678901Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.22) starting as process 1
...

2021-01-01T01:23:45.678902Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.22'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

2021-01-01T01:23:45.678903Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
...

在日志中,你将找到 ready for connections 字样,后面的一行就是 MySQL 的初始密码。

方法二:通过执行命令查看密码

如果我们无法访问容器的日志,或者容器已经启动很长时间,我们可以通过进入容器执行命令的方式来查看密码。

首先,使用以下命令启动 MySQL 容器:

docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password mysql:latest

其中 your_password 是你为 MySQL 设置的密码。

然后,使用以下命令进入容器:

docker exec -it mysql-container bash

进入容器后,可以执行以下命令来查看密码:

echo $MYSQL_ROOT_PASSWORD

命令输出即为 MySQL 的密码。

序列图

下面是通过容器日志和执行命令两种方式的序列图:

sequenceDiagram
    participant User
    participant Docker
    participant MySQLContainer

    User->>Docker: docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password mysql:latest
    Docker->>MySQLContainer: Start MySQL container
    User->>Docker: docker logs mysql-container
    Docker->>MySQLContainer: Get container logs
    MySQLContainer->>User: Display container logs

    User->>Docker: docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password mysql:latest
    Docker->>MySQLContainer: Start MySQL container
    User->>Docker: docker exec -it mysql-container bash
    Docker->>MySQLContainer: Enter container shell
    User->>Docker: echo $MYSQL_ROOT_PASSWORD
    Docker->>MySQLContainer: Get password environment variable
    MySQLContainer->>User: Display password

类图

暂无类图。

结论

通过以上两种方法,我们可以轻松地查看到 Docker 中 MySQL 的密码。在实际应用中,我们可以根据具体情况选择合适的方法来解决密码丢失或忘记的问题。

注意:在生产环境中,为了保证数据库的安全性,建议不要在容器日志或容器内部明文显示密码。