Mysql Docker compose:数据库未初始化
我对docker compose和mysql有问题: docker-compose.ymlMysql Docker compose:数据库未初始化,mysql,docker,docker-compose,Mysql,Docker,Docker Compose,我对docker compose和mysql有问题: docker-compose.yml version: '2' services: db: image: mysql volumes: - "./sito/db/:/var/lib/mysql" ports: - "3306:3306" restart: always environment: MYSQL_ROOT_PASSWORD: app:
version: '2'
services:
db:
image: mysql
volumes:
- "./sito/db/:/var/lib/mysql"
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD:
app:
depends_on:
- db
image: eboraas/apache-php
links:
- db
ports:
- "80:80"
volumes:
- ./sito/:/var/www/html/
撰写此容器时出错:
Recreating phpapp_phpapache_1
Attaching to phpapp_db_1, phpapp_phpapache_1
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
phpapache_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.30.0.3. Set the 'ServerName' directive globally to suppress this message
phpapp_db_1 exited with code 1
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
db_1 | error: database is uninitialized and password option is not specified
db_1 | You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
db_1 | error: database is uninitialized and password option is not specified
但是数据库没有密码。我该怎么解决呢?看起来您正在将MYSQL\u ROOT\u密码设置为空。根据文件,这是必需的 MYSQL\u ROOT\u密码 此变量是必需的,指定将为MySQL根超级用户帐户设置的密码 根据,您必须使用-和=来代替
MYSQL\u ROOT\u密码:
,并且还应该使用“密码”
结果将是:
-MYSQL\u ROOT\u PASSWORD=some\u PASSWORD
在您的示例中:
version: '2'
services:
db:
image: mysql
volumes:
- "./sito/db/:/var/lib/mysql"
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=some_password
如果不为
MYSQL\u ROOT\u PASSWORD
指定一个值,则会出现问题(其他情况将在下面解释)
您可以使用以下语法之一:
# syntax 1
environment:
MYSQL_ROOT_PASSWORD: strongrootpassword
如果您希望使用空/空密码,请使用以下密码:
MYSQL_ALLOW_EMPTY_PASSWORD=1
MYSQL_RANDOM_ROOT_PASSWORD=1
如果要设置随机密码,请使用以下命令:
MYSQL_ALLOW_EMPTY_PASSWORD=1
MYSQL_RANDOM_ROOT_PASSWORD=1
然后,您可以使用
docker logs container_name_or_id
最后需要根据MYSQL镜像的入口点,指定一个MYSQL\u ROOT\u密码,MYSQL\u允许\u空密码
和MYSQL\u随机\u ROOT\u密码
:
用于验证变量是否为空-z
if[-z“$MYSQL\u ROOT\u PASSWORD”-a-z“$MYSQL\u ALLOW\u EMPTY\u PASSWORD”-a-z“$MYSQL\u RANDOM\u ROOT\u PASSWORD”];然后
echo>&2'错误:数据库未初始化,未指定密码选项'
echo>&2“您需要指定MYSQL\u ROOT\u密码、MYSQL\u ALLOW\u EMPTY\u密码和MYSQL\u RANDOM\u ROOT\u密码中的一个”
出口1
fi
我只想指出一点,如果在终端中使用docker run
命令而不是docker compose,这将是命令:
docker run -e MYSQL_ROOT_PASSWORD=password mysql_image
请注意如果您将-e MYSQL\u ROOT\u PASSWORD=PASSWORD
放在MYSQL\u image
之后,我们可以使用
docker container run -d --name mysql -e MYSQL_RANDOM_ROOT_PASSWORD=password mysql
您可以提供任何名称和密码可能的大。。。你是怎么做到的<代码>docker run-e MYSQL\u ROOT\u PASSWORD=ROOT不起作用。看看官方文件。如果在容器中运行
printenv
,您应该会看到env变量集。您好,Mostafa,我无法使用docker日志访问生成的密码,我如何访问密码?这不是应该使用的MYSQL\u RANDOM\u ROOT\u password
。它需要true
或false
值(默认为true)才能生成随机密码,除非设置了MYSQL\u ROOT\u password
。有关更多详细信息,您可以查看以下内容