MySQL MySQL scripts in docker-entrypoint-initdb are not executed错误

MySQL MySQL scripts in docker-entrypoint-initdb are not executed错误

最近遇到一些问题,就是使用 Docker 来部署 MySQL 服务时,在 docker-entrypoint-initdb.d 目录中添加的 SQL 脚本并没有执行成功。经过调查和试错,我总结了一些可能导致这个问题的原因和解决方法。

问题原因:

  1. 权限问题。在使用 Docker 来部署 MySQL 服务时,需要创建一个自定义的用户,以便在启动容器时指定该用户运行服务器进程。如果该用户没有执行脚本文件的权限,那么这些脚本是不能被执行的。

  2. 目录问题。必须要把 SQL 脚本放在 docker-entrypoint-initdb.d 目录下,并且必须具有正确的文件扩展名(.sh,.sql 或 .sql.gz)。否则,MySQL 容器将不会运行这些脚本。

解决方法:

阅读更多:MySQL 教程

方法一:给脚本文件添加执行权限

如果你使用了自定义用户启动 MySQL 容器,那么你需要对 SQL 脚本添加执行权限。通过在 Dockerfile 中使用 chmod 指令,可以很容易地解决这个问题,如下所示:

RUN chmod +x /docker-entrypoint-initdb.d/my_script.sh

方法二:检查目录和文件名

如果你确定文件已经具有正确的扩展名,并且已经在 docker-entrypoint-initdb.d 目录下了,那么你可以尝试检查目录是否意外地被重命名,或者文件名是否存在语法错误,如下所示:

docker-entrypoint-initdb.d/mysql-init.sql

总结

总结一下,MySQL 容器在启动时,会从 docker-entrypoint-initdb.d 目录下执行任何 SQL 和 Shell 脚本文件。确保你的 SQL 脚本文件存在该目录下,具有正确的扩展名,且具有可执行权限。如果你的脚本还是不能被执行,请尝试排除目录或文件名称拼写错误,或查看容器或运行时日志是否有相应的错误提示。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程