如何在Docker启动时自动选择MySQL数据库?

如何在Docker启动时自动选择MySQL数据库?,mysql,docker,Mysql,Docker,我们目前正试图找到一种更有效的方法来处理MySQL docker启动过程,目前有以下几点: FROM mysql ENV MYSQL_DATABASE marsdb COPY ./src/main/resources/ /docker-entrypoint-initdb.d/ docker exec -it marssql bin/bash mysql -u root -p pass use marsdb; 及 此设置的问题如下:一旦容器启动,当前必须有人手动进入容器并选择数据库,在本例

我们目前正试图找到一种更有效的方法来处理MySQL docker启动过程,目前有以下几点:

FROM mysql

ENV MYSQL_DATABASE marsdb

COPY ./src/main/resources/ /docker-entrypoint-initdb.d/
docker exec -it marssql bin/bash
mysql -u root -p
pass
use marsdb;

此设置的问题如下:一旦容器启动,当前必须有人手动进入容器并选择数据库,在本例中为
marsdb
,如下所示:

FROM mysql

ENV MYSQL_DATABASE marsdb

COPY ./src/main/resources/ /docker-entrypoint-initdb.d/
docker exec -it marssql bin/bash
mysql -u root -p
pass
use marsdb;

有没有一种方法可以在容器启动后自动选择数据库?

将DB名称传递给命令怎么样,这样就不需要切换了

mysql -u root -ppass marsdb
#or
docker exec -it marssql bin/bash -c "mysql -u root -ppass marsdb"

或者,如果您不确定DB,那么可以尝试使用默认DB环境变量运行容器。在此数据库中,MySQL将为自动创建数据库,并针对该数据库运行entrypoint脚本

docker run -it --rm  --name marssql -e DEFAULT_DB=marsedb -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=marsedb mysql
然后你可以像这样连接

docker exec -it marssql bin/bash -c "mysql -u root -ppass $DEFAULT_DB"

MYSQL\u数据库

此变量是可选的,允许您指定 要在映像启动时创建的数据库。如果用户/密码是 提供(见下文),则该用户将被授予超级用户访问权限 (对应于全部授予)此数据库。


将DB名称传递给命令怎么样,这样就不需要切换了

mysql -u root -ppass marsdb
#or
docker exec -it marssql bin/bash -c "mysql -u root -ppass marsdb"

或者,如果您不确定DB,那么可以尝试使用默认DB环境变量运行容器。在此数据库中,MySQL将为自动创建数据库,并针对该数据库运行entrypoint脚本

docker run -it --rm  --name marssql -e DEFAULT_DB=marsedb -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=marsedb mysql
然后你可以像这样连接

docker exec -it marssql bin/bash -c "mysql -u root -ppass $DEFAULT_DB"

MYSQL\u数据库

此变量是可选的,允许您指定 要在映像启动时创建的数据库。如果用户/密码是 提供(见下文),则该用户将被授予超级用户访问权限 (对应于全部授予)此数据库。


我想你应该考虑在启动集装箱时不要这样做。从使用数据库的任何应用程序连接到数据库时,可以在连接字符串中指定要处理的数据库


试着阅读下面的答案:

p>我想你应该考虑在启动容器时不要这样做。从使用数据库的任何应用程序连接到数据库时,可以在连接字符串中指定要处理的数据库


尝试阅读以下答案:

谢谢,我可以使用:docker exec-it marssql-bin/bash-c“mysql-uroot-ppass marsdb”解决它。谢谢,我可以使用:docker exec-it marssql-bin/bash-c“mysql-uroot-ppass marsdb”解决它