Ограничение хоста для пользователя MySQL в контейнере Docker

Я создаю файл 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, Тем не менее, в моем конкретном случае эта строка хоста еще длиннее и превышает ограничение в 60 символов, установленное MySQL.

Есть ли способ настроить мои контейнеры, чтобы мой второй пример ('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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]