簡體   English   中英

為什么在創建新的 mysql 容器時 docker 不會生成密碼?

[英]Why won't docker generate a password when creating a new mysql container?

我按照指南設置 docker 和 mysql(我再也找不到),一切都按預期進行。 但是我不得不重新安裝我的操作系統,現在使用相同的命令並沒有達到我的預期。

當創建一個新容器,然后運行“docker logs <container_name>”時,我希望看到一長串日志信息,其中是一個一次性隨機生成的密碼,然后我可以用它來更改一個更容易記住的密碼。

但是,我只得到一小段沒有密碼的日志。 我什至從官方 mysql 指南中逐行復制命令,該指南明確指出應該向我顯示密碼,但沒有。

奇怪的是,我意識到 docker 需要更新,運行更新並發現運行日志命令現在按預期顯示密碼,但是當我在另一個容器上再次嘗試時。 原來的問題又回來了。 從那以后,我再也無法重現這種成功。

我覺得我沒有解決問題的選擇。

這是我運行的所有代碼,從安裝 docker 到打印日志文件。

#docker setup
sudo systemctl enable docker.service #start docker on startup
sudo systemctl start docker.service #start docker now
sudo docker pull mysql/mysql-server:latest

#create volumes
sudo docker volume create mysql-config
sudo docker volume create mysql-data

#container setup
sudo docker run --name master32-mysql -dp 3306:3306 -v mysql-data:/var/lib/mysql mysql/mysql-server:latest
sudo docker logs master32-mysql

這是我運行最后一個命令后得到的日志:

[Entrypoint] MySQL Docker Image 8.0.28-1.2.7-server
[Entrypoint] Starting MySQL 8.0.28-1.2.7-server
2022-01-27T00:52:41.963514Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.28) starting as process 1
2022-01-27T00:52:41.969879Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-01-27T00:52:42.066204Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-01-27T00:52:42.219166Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2022-01-27T00:52:42.219204Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2022-01-27T00:52:42.233405Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2022-01-27T00:52:42.233414Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.28'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server - GPL.

誰能弄清楚為什么這沒有顯示密碼? 我知道這個命令只顯示一次密碼,但是我制作的每一個新容器都會遇到這個問題。

解決方案:

主要問題是我希望每個新容器都生成自己的密碼,卻沒有意識到密碼存儲在與容器鏈接的卷中。 要獲得新密碼,我需要創建新卷並將新容器與之鏈接。

我還需要在“docker run”命令中添加“-e MYSQL_RANDOM_ROOT_PASSWORD=1”。

您沒有在啟動時指定'-e MYSQL_RANDOM_ROOT_PASSWORD=1'( docker run )。

參考: 入口點

參考: docker 集線器文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM