如何向mysql docker容器添加启动脚本?

如何向mysql docker容器添加启动脚本?,mysql,sql,docker,Mysql,Sql,Docker,我用mysql启动了一个docker容器。 实际上,我想创建一个新用户和一个新表——我必须在MySQL工作台上完成这项工作。 这是我的docker运行命令: docker-run-p3306:3306——名称mysql-server-v~/Development/web/myproject/docker/mysql:/var/lib/mysql-e mysql\u ROOT\u PASSWORD=ROOT-d mysql:latest 我的问题是: 如何添加创建用户和表的sql启动脚本(仅用

我用mysql启动了一个docker容器。
实际上,我想创建一个新用户和一个新表——我必须在MySQL工作台上完成这项工作。

这是我的docker运行命令:
docker-run-p3306:3306——名称mysql-server-v~/Development/web/myproject/docker/mysql:/var/lib/mysql-e mysql\u ROOT\u PASSWORD=ROOT-d mysql:latest


我的问题是:
如何添加创建用户和表的sql启动脚本(仅用于容器的第一次启动)?
我必须执行哪些步骤?

有人能帮我吗?

非常感谢

您需要通过
MYSQL\u user
MYSQL\u PASSWORD
env vars创建用户,并使用volume
/docker entrypoint initdb.d
用启动脚本映射目录(
.sh
.sql
.sql.gz

解释来自:

MYSQL\u用户,MYSQL\u密码
这些变量是可选的,用于创建新用户和设置该用户的密码。此用户将被授予对
MYSQL\u database
变量指定的数据库的超级用户权限(见上文)。这两个变量都是创建用户所必需的

初始化新实例

第一次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量初始化该数据库。此外,它将执行扩展名为
.sh
.sql
.sql.gz
的文件,这些文件位于
/docker entrypoint initdb.d
中。文件将按字母顺序执行。您可以轻松地通过和提供贡献的数据来填充mysql服务。默认情况下,SQL文件将导入到由
MYSQL\u database
变量指定的数据库。

您需要通过
MYSQL\u user
MYSQL\u PASSWORD
env vars创建用户,并使用volume
/docker entrypoint initdb.d
将目录与启动脚本映射(
.sh
.sql
.sql.gz

解释来自:

MYSQL\u用户,MYSQL\u密码
这些变量是可选的,用于创建新用户和设置该用户的密码。此用户将被授予对
MYSQL\u数据库
变量指定的数据库的超级用户权限(见上文)。创建用户需要这两个变量

初始化新实例

第一次启动容器时,将使用提供的配置变量创建并初始化具有指定名称的新数据库。此外,它将执行扩展名为
.sh
.sql
.sql.gz
的文件,这些文件位于
/docker entrypoint initdb.d
中。文件将为e按字母顺序执行。您可以轻松地通过填充mysql服务并提供贡献的数据。默认情况下,SQL文件将导入到由
mysql\u数据库
变量指定的数据库中。

谢谢
-v~/Development/web/myproject/docker/yourstupscripts:/docker entrypoint initdb.d
->就是这样我搜索的内容:)通过脚本创建一个新用户或在docker run命令中创建它有什么区别?@m1well您可以在这里查看用户是如何创建的:啊,好吧-这与我在脚本中创建用户的方式相同。那么我更喜欢我的剧本:)--谢谢!在任何后续docker启动中,脚本都不会正确执行?谢谢
-v~/Development/web/myproject/docker/yourstupscripts:/docker entrypoint initdb.d
->这就是我搜索的:)通过脚本创建新用户或在docker run命令中创建它有什么区别吗?@m1您可以准确地检查出来用户是如何在这里创建的:啊,好吧,这和我在脚本中创建用户的方式是一样的。那么我更喜欢我的剧本:)--谢谢!在任何后续docker启动中,脚本将不会正确执行?
docker run -p 3306:3306 --name mysql-server \ 
 -v ~/Development/web/myproject/docker/mysql:/var/lib/mysql \
 -v ~/Development/web/myproject/docker/yourstartupscripts:/docker-entrypoint-initdb.d \
 -e MYSQL_ROOT_PASSWORD=root \
 -e MYSQL_USER=youruser \
 -e MYSQL_PASSWORD=youruserpassword \
 -d mysql:latest