Я устанавливаю приложение CakePHP 3.7 и использую docker compose. У меня также есть служба mysql, к которой я пытаюсь подключиться, но я получаю эту ошибку: Access denied for user 'ws_user'@'172.20.0.3' (using password: YES)
Я даю разрешения пользователю следующим образом: GRANT ALL PRIVILEGES ON mydb.* TO 'ws_user'@'%' IDENTIFIED BY '<superSecretPasswordHere>'
.
Если я использую учетные данные root, cakephp сможет установить соединение просто отлично.
Я также предоставляю службу mysql через порт 3030 моей локальной машине, и я в состоянии легко установить учетные данные ws_user.
Я также настроил запуск mysql на моем локальном компьютере с теми же учетными данными, и торт может нормально подключаться к хосту 172.17.0.1
.
Я озадачен, в чем может быть проблема. Похоже, что это проблема с разрешениями (из-за сообщения об ошибке), но я могу подключиться через незащищенный порт через командную строку. Моей следующей мыслью было, что это может быть из-за специальных символов в пароле, но, опять же, если я подключусь к mysql, работающему на моей хост-машине, он будет работать нормально с тем же паролем.
Вот мой файл docker-compose:
version: '2'
# define all services
services:
# our service is called CakePHP ;-)
cakephp:
# we want to use the image which is build from our Dockerfile
build:
context: .
dockerfile: Dockerfile
# apache is running on port 80 but we want to expose this to port 4000 on our local machine
ports:
- "80:80"
# we are depending on the mysql backend
depends_on:
- mysql
# we mount the working dir into the container, handy for development
volumes:
- .:/var/www/html/
environment:
- SECURITY_SALT
- MYSQL_HOST
- MYSQL_USERNAME
- MYSQL_PASSWORD
mysql:
# we use the mysql base image, version 5.6.36
#image: mysql:5.6.39
build:
context: .
dockerfile: Dockerfile.mysql
ports:
- "3030:3006"
# we mount a datavolume to make sure we don't lose data
volumes:
- mysql_data:/var/lib/mysql
# setting some envvars to create the DB
environment:
- MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE
volumes:
mysql_data: