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 的密码。在实际应用中,我们可以根据具体情况选择合适的方法来解决密码丢失或忘记的问题。
注意:在生产环境中,为了保证数据库的安全性,建议不要在容器日志或容器内部明文显示密码。