【问题标题】:Docker MySql automate configuration of `mysql.user` table (or Ansible)Docker MySql 自动配置 `mysql.user` 表(或 Ansible)
【发布时间】:2020-08-26 13:52:26
【问题描述】:

MySql 是通过 docker 和 ansible 脚本安装的。

为了能够从宿主机登录容器,现在我手动登录容器并运行sql语句:

$ docker exec -it bm_my_sql bash
bash-4.2# mysql -uroot -p
update mysql.user set host = '%' where user = 'root';

然后我可以从主机登录到容器:

$ mysql -h localhost -P 3306 --protocol=tcp -u root -p

问题是,如何通过 docker 配置或 ansible 脚本为 root 用户更新 mysql.user.host 字段。

找不到任何配置设置。

【问题讨论】:

  • 这是通过 env vars 和官方 mysql docker 镜像上的入口点脚本管理的。这是版本 8 的版本:github.com/docker-library/mysql/blob/master/8.0/…。您可以在图像文档中找到相应的环境变量:hub.docker.com/_/mysql
  • @Zeitounator,找到MYSQL_ROOT_HOST env 变量对我来说是个问题。仔细看了一遍,发现了。不幸的是,它只在文档中提到,没有描述。用户只能猜测它的作用。

标签: mysql docker configuration


【解决方案1】:

如果您使用的是 MySQL dockerhub 映像:

当一个容器第一次启动时,一个新的数据库 将使用提供的创建和初始化指定的名称 配置变量。此外,它将执行文件 扩展名 .sh、.sql 和 .sql.gz /docker-entrypoint-initdb.d。文件将按字母顺序执行 命令。您可以通过挂载 SQL 轻松填充 mysql 服务 转储到该目录并提供带有贡献的自定义图像 数据。 SQL文件将默认导入指定的数据库 通过 MYSQL_DATABASE 变量。

因此,您可以将带有该语句的 SQL 脚本放入映射到 /docker-entrypoint-initdb.d 目录的卷中。

【讨论】:

  • 谢谢。它是一个更灵活,但对于这个问题也更复杂的解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
相关资源
最近更新 更多