当您不设置密码时,docker 容器 mysql-server 中的默认密码是什么?

Ces*_*uel 9 mysql docker

我尝试运行一个 mysql 容器并与 mysql 客户端连接,然后:

我使用了以下命令:

docker run --name=mysql -d mysql/mysql-server:latest
docker exec -it mysql mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)

根据教程,最后一个命令允许我配置数据库密码但是当我引入第一个密码时它失败了......

在此处输入图片说明

第一个密码是 root,我收到一个不寻常的错误,然后我尝试使用 admin、admin 甚至我的 linux 用户密码,但它们不起作用...

我想知道错误是什么?

atl*_*der 44

docker inspect <container_name_here>命令输出显示 root 密码以及其他参数


nis*_*yal 17

有几种方法可以查看密码。 第一种方法 - 不要在守护进程模式下运行容器

检查以下命令

docker run --name=mysql mysql/mysql-server:latest
Run Code Online (Sandbox Code Playgroud)

这将在终端中打印密码,请查看以下日志

2020-05-28T23:41:01.418347Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock'
2020-05-28T23:41:01.666070Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-05-28T23:41:01.714420Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.20'  socket: '/var/lib/mysql/mysql.sock'  port: 0  MySQL Community 
Server - GPL.
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
[Entrypoint] GENERATED ROOT PASSWORD: PopiKQIjAS#OGj3x]yJOBLEn80p
[Entrypoint] ignoring /docker-entrypoint-initdb.d/*
2020-05-28T23:41:06.208480Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.20).
2020-05-28T23:41:07.861667Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20)  MySQL Community Server - GPL.
[Entrypoint] Server shut down
[Entrypoint] Setting root user as expired. Password will need to be changed before database can be used.
[Entrypoint] MySQL init process done. Ready for start up.
[Entrypoint] Starting MySQL 8.0.20-1.1.16
2020-05-28T23:41:08.534785Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 1
2020-05-28T23:41:08.549216Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-05-28T23:41:09.135591Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-05-28T23:41:09.369412Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
2020-05-28T23:41:09.448584Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-05-28T23:41:09.500464Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.20'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Communi
ty Server - GPL.

Run Code Online (Sandbox Code Playgroud)

第二种方法 - 以守护进程模式运行容器并从日志中获取密码 检查以下命令以运行容器

docker run -d --name=mysql mysql/mysql-server:latest
Run Code Online (Sandbox Code Playgroud)

然后运行下面的命令来获取密码

docker logs mysql1 2>&1 | grep GENERATED
Run Code Online (Sandbox Code Playgroud)

上述命令的输出是:

[Entrypoint] GENERATED ROOT PASSWORD: PopiKQIjAS#OGj3x]yJOBLEn80p
Run Code Online (Sandbox Code Playgroud)

通过上述方法之一获得密码后,您可以使用该密码使用以下命令登录

docker exec -it mysql mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)

询问时,输入生成的 root 密码(请参阅上面有关如何找到它的说明)。由于该MYSQL_ONETIME_PASSWORD选项默认为 true,因此在将 mysql 客户端连接到服务器后,必须通过发出以下语句来重置服务器 root 密码:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

替换password为您选择的密码。一旦密码被重置,服务器就可以使用了。

参考:https : //hub.docker.com/r/mysql/mysql-server/


Har*_*der 11

第一次启动mysql 容器时,没有默认密码。您在运行容器时设置的密码是将分配给您的root.

启动 MySQL 实例很简单: $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

其中some-mysql是要分配给容器的名称,my-secret-pw 是要为 MySQL root 用户设置的密码,tag 是指定所需 MySQL 版本的标签。请参阅上面的列表以获取相关标签。