Я устанавливаю контейнер mysql: 5 (изображение из концентратора докеров) в подсеть, совместно используемую с другим контейнером (веб-сервером).
Я бы хотелограничить моего пользователя mysql хостом, соответствующим контейнеру веб-сервера.
Если я ограничу его напрямую с помощью контейнера веб-сервера ip, то это работает, но этот ip не может измениться из-за среды докера, поэтому я хотел быесть что-то вроде:
GRANT ALL PRIVILEGES ON `db`.* TO 'user'@'container-name'
И когда я пытаюсь подключиться к серверу, отвечаю:
Доступ запрещен для пользователя'user'@'172.18.0.4'
Где 172.18.0.4 - правильный ip для контейнера веб-сервера.
Пример:
docker-compose.yaml
version: '2'
services:
mysql1:
image: mysql
container_name: mysql1
ports:
- '3306:3306'
environment:
- MYSQL_ROOT_PASSWORD=rootpwd
mysql2:
image: mysql
container_name: mysql2
environment:
- MYSQL_ROOT_PASSWORD=rootpwd
Up контейнеров
docker-compose up -d
Создать пользователя в mysql1
docker-compose exec mysql1 mysql -u root --password="rootpwd" -e "CREATE USER user@mysql2 IDENTIFIED BY 'pwd'; GRANT ALL PRIVILEGES ON * TO user@mysql2" sys
Попробуйте получить доступ к mysql1 из mysql2 пользователем
docker-compose exec mysql2 mysql -u user --password="pwd" -h mysql1 sys
ОШИБКА 1045 (28000): доступ запрещен для пользователя 'user'@'172.18.0.3' (с использованием пароля: ДА)
Информация о сети Docker
docker network inspect test-mysql-user-host_default
{
"Name": "test-mysql-user-host_default",
"Id": "305f4da33e0b79d899ac289e6b3fc1ebf2733baf0bf3d60a53cc94cec44176d1",
"Created": "2019-04-26T09:53:23.3237197Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"133ebd1e6ba485212e5448670c66c1718917650bc217264183c725fb1a928118": {
"Name": "mysql1",
"EndpointID": "ce89aa1674e9c46fad50b2f36aec8d1eecf2227f597a785be67785ade770fef7",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
},
"d67072a5c486752b7018fa321e47ae09fb873199604c2b520f2305968d43b577": {
"Name": "mysql2",
"EndpointID": "e6b62c6ce9e266d38be383fa6029f378e1ca67a18420dd3f508a3089200c0d98",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}