我正在创建一个docker compose文件,其中包括一个php服务和一个mysql服务。作为mysql容器初始化的一部分,我创建了一个新的mysql用户,php容器将使用该用户来查询数据库。现在,我正在创建这样的用户:
CREATE USER 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY 'mypass';
GRANT INSERT, UPDATE, SELECT, DELETE ON mydb.* TO 'myuser'@'%';
这个工程-我的php脚本可以成功地查询mysql数据库。
但是,我希望能够将用户限制为php容器,而不是允许从任何地方进行连接( '%'
). 我试着像这样重新创建我的用户:
CREATE USER 'myuser'@'php' IDENTIFIED WITH mysql_native_password BY 'mypass';
GRANT INSERT, UPDATE, SELECT, DELETE ON mydb.* TO 'myuser'@'php';
但是,当我运行相同的php脚本时,出现以下错误:
Access denied for user 'myuser'@'my-docker-container.my-docker-project_my-docker-network'
基于这个错误,理论上我可以创建主机限制为的用户 my-docker-container.my-docker-project_my-docker-network
. 但是,在我的具体例子中,这个主机字符串甚至更长,并且超过了mysql规定的60个字符的限制。
有没有一种方法可以配置我的容器,使我的第二个示例( 'myuser'@'php'
)会有用吗?
下面是如何在我的数据库中定义php和mysql服务 docker-compose.yml
:
php:
image: my-php-image
container_name: my-php-container
build: ./php
networks:
- my-network
mysql:
image: my-mysql-image
container_name: my-mysql-container
build: ./mysql
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- my-mysql-volume:/var/lib/mysql
networks:
- my-network
暂无答案!
目前还没有任何答案,快来回答吧!