我用mysql启动了一个docker容器。 实际上,我想创建一个新用户和一个新表-我必须在MySQL Workbench中进行操作。
这是我的docker run命令: docker run -p 3306:3306 --name mysql-server -v ~/Development/web/myproject/docker/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
docker run -p 3306:3306 --name mysql-server -v ~/Development/web/myproject/docker/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
我的问题是: 如何添加创建用户和表的sql启动脚本(仅用于容器的首次启动)? 我必须执行哪些步骤?
有人可以帮我吗? 非常感谢!
你需要通过创建用户MYSQL_USER,MYSQL_PASSWORDENV VAR和使用量/docker-entrypoint- initdb.d与启动脚本映射目录(.sh,.sql,.sql.gz)
MYSQL_USER
MYSQL_PASSWORD
/docker-entrypoint- initdb.d
.sh
.sql
.sql.gz
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
解释来自:https : //hub.docker.com/_/mysql/
MYSQL_USER,MYSQL_PASSWORD 这些变量是可选的,与创建新用户和设置该用户的密码一起使用。该MYSQL_DATABASE变量将为该用户授予超级用户权限(请参见上文)。这两个变量都是创建用户所必需的。
MYSQL_DATABASE
初始化新实例 首次启动容器时,将创建一个具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它会执行文件(可扩展).sh,.sql并且.sql.gz是在发现/docker- entrypoint- initdb.d。文件将按字母顺序执行。您可以通过将SQL转储安装到该目录中并为自定义图像提供贡献的数据来轻松地填充mysql服务。默认情况下,SQL文件将导入到MYSQL_DATABASE变量指定的数据库中。
/docker- entrypoint- initdb.d