我想解决这个问题: 错误1290(HY000):MySQL服务器正在运行–secure-file-priv选项,因此无法执行此语句与docker上的官方MySQL 8图像….
根据 这个文件 ,你可以配置 secure-file-priv 通过命令行传递 --secure-file-priv=dir_name
secure-file-priv
--secure-file-priv=dir_name
secure-file-priv可能的值为:空字符串,dirname或NULL,如priv url中所述。
从 mysql-docker页面 :
的 没有cnf文件的配置 强> :许多配置选项可以作为标志传递给mysqld。这将使您可以灵活地自定义容器,而无需cnf文件。例如,如果要更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4),只需运行以下命令:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
所以在我们的例子中会是这样的:
的 DIR_NAME 强> 应该是容器内的目录,否则您将收到以下错误: mysqld: Error on realpath() on 'dir_name' (Error 2 - No such file or directory)
mysqld: Error on realpath() on 'dir_name' (Error 2 - No such file or directory)
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --secure-file-priv=dir_name
现在我们的改变是在MySQL中实现的
mysql> SHOW VARIABLES LIKE "secure_file_priv"; +------------------+----------+ | Variable_name | Value | +------------------+----------+ | secure_file_priv | dir_name | +------------------+----------+
或者,您可以使用自定义配置文件,如下所述:
的 使用自定义MySQL配置文件 强> :MySQL的默认配置可以在/etc/mysql/my.cnf中找到,它可以包含其他目录,例如/etc/mysql/conf.d或/etc/mysql/mysql.conf.d。请检查mysql映像本身中的相关文件和目录以获取更多详细信息。 如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则可以像这样启动mysql容器(请注意,此命令中仅使用自定义配置文件的目录路径):
的 使用自定义MySQL配置文件 强> :MySQL的默认配置可以在/etc/mysql/my.cnf中找到,它可以包含其他目录,例如/etc/mysql/conf.d或/etc/mysql/mysql.conf.d。请检查mysql映像本身中的相关文件和目录以获取更多详细信息。
如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则可以像这样启动mysql容器(请注意,此命令中仅使用自定义配置文件的目录路径):
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
这将启动一个新容器 some-mysql MySQL实例使用的组合启动设置 /etc/mysql/my.cnf 和 /etc/mysql/conf.d/config-file.cnf ,后者的设置优先。
some-mysql
/etc/mysql/my.cnf
/etc/mysql/conf.d/config-file.cnf