mysql - mysql docker如何通过环境设置白名单
问题描述
mysql:
image: mysql:mysql80
command: "--innodb_use_native_aio=0"
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: t_user
MYSQL_PASSWORD: t_pwd
ports:
- "3306:3306"
volumes:
- $PWD/mysql/datadir:/var/lib/mysql
- $PWD/mysql/conf.d:/etc/mysql/conf.d
networks:
- net-website
container_name: mysql
php:
image: php:php73
restart: always
ports:
- "9000:9000"
- "9501:9501"
volumes:
- $PWD/../:/var/www/html/
links:
- mysql
depends_on:
- mysql
networks:
- net-website
container_name: php
我想知道如何设置 docker-compose.yml 文件以使用户t_user
只能从另一个 docker 容器或我想访问的某些 IP 访问。
我没有在 mysql 的官方 docker 站点或 google 上找到关于此的文档。但我真的需要这个。
默认情况下,我的 yml 文件将创建一个用户: ,'t_user'@'%'
但我想创建像 :'t_user'@'in_docker'
和't_user'@'ip_A'
't_user'@'ip_B'
解决方案
您需要从初始文件创建用户。users.sql
与您需要的所有用户一起创建文件。一个例子:
CREATE USER 't_user'@'in_docker' IDENTIFIED BY 'password';
GRANT USAGE ON `table`.* TO 't_user'@'in_docker' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
GRANT ALL PRIVILEGES ON `table`.* TO 't_user'@'in_docker';
放置users.sql
在$PWD/mysql
dir 中并使用 volume 来提供这个文件作为初始数据:
volumes:
- $PWD/mysql/datadir:/var/lib/mysql
- $PWD/mysql/conf.d:/etc/mysql/conf.d
- $PWD/mysql/users.sql:/docker-entrypoint-initdb.d/users.sql
官方 MySQL docker镜像描述说:
首次启动容器时,将创建一个具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行 /docker-entrypoint-initdb.d 中的扩展名为 .sh、.sql 和 .sql.gz 的文件
推荐阅读
- javascript - Angular - 观察者地图未按预期工作
- java - 本地化变量的值
- angular - 如何让 activeModal 识别实际的活动 Modal?
- python - Python中动画3-D散点图的个别颜色
- javascript - 如何用ajax动态替换facebook分享链接的一部分
- spring-boot - 更正应用程序的类路径,使其包含一个兼容的 org.elasticsearch.client.IndicesClient 版本
- python - 使用 BeautifulSoup 抓取 ESPN Fantasy Football
- c - 有人可以向我解释这段代码的作用吗?
- bash - 如果匹配,则将文本附加到下一行的开头
- php - 在使用 wp-graphql 的 register_post_type 之后未添加 Wordpress 自定义帖子类型