启动 docker 容器后,我有一个准备好的 sql5.7 服务器。但我需要创建一个名为“root”的 root 用户,并授予他所有权限和来自外部的访问权限。所以我需要这些 sql 命令在容器创建后自动执行。
这是我的 docker-compose.yml
version: '3.1'
services:
mysql:
container_name: mysql5.7
restart: always
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 'mypassword'
ports:
- 33063:3306
volumes:
- sql-data:/var/lib/mysql
volumes:
sql-data:
我需要自动执行这个 sql 命令:FLUSH PRIVILEGES;
CREATE LOGIN root WITH PASSWORD = "mypassword"
GRANT ALL PRIVILEGES *.* TO 'root'@'%';
最佳答案
您将需要基于原始 MySQL 制作个性化图像。
创建一个文件夹并将您需要运行的命令以 .sql 格式放在那里,并在那里创建一个 Docker 文件,一个简单的文件可以是:
FROM mysql:5.7
COPY /NAME.sql /docker-entrypoint-initdb.d/
这将确保您创建的图像是原始 mysql 5.7 + 脚本的副本。然后在该文件夹中运行 Docker 运行命令以创建镜像并使用该镜像名称代替原始 mysql,例如:docker image build -t imageName:latest .
关于mysql - 启动 docker-compose sql 实例后如何自动执行 SQL 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68441124/