J'essayais Docker pour la première fois. Vous avez une pile LEMP opérationnelle, mais je ne peux pas me connecter à la base de données MYSQL. Pas sur mon application Symfony, pas sur PHPMyAdmin. Les applications renvoient le code d'erreur suivant:
Une exception s'est produite dans le pilote: SQLSTATE [HY000] [2002] Connexion refusée
Ceci est mon docker-compose.yml:
nginx:
image: tutum/nginx
ports:
- "80:80"
links:
- phpfpm
volumes:
- ./nginx/default:/etc/nginx/sites-available/default
- ./nginx/default:/etc/nginx/sites-enabled/default
- ./logs/nginx-error.log:/var/log/nginx/error.log
- ./logs/nginx-access.log:/var/log/nginx/access.log
phpfpm:
build: phpfpm/
ports:
- "9000:9000"
volumes:
- ./public:/usr/share/nginx/html
mysql:
image: mariadb
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: admin
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
links:
- mysql
ports:
- 8183:80
environment:
MYSQL_USERNAME: admin
MYSQL_ROOT_PASSWORD: admin
PMA_ARBITRARY: 1
Dockerfile PHPFPM:
FROM php:fpm
RUN docker-php-ext-enable opcache
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpq-dev \
&& docker-php-ext-install mysqli pdo_pgsql pdo_mysql
URL GitHub: https://github.com/MolengraafFrank/DockerSymfony
Est-ce que quelqu'un peut me donner un coup de main? Merci pour votre temps.
La «[2002] connexion refusée» signifie que vous pouvez accéder au serveur de base de données, mais que vous n'avez pas le droit d'accès pour l'utilisateur (dans votre cas, administrateur). Par défaut, mariadb a un utilisateur root avec le mot de passe fourni par MYSQL_ROOT_PASSWORD et cet utilisateur peut se connecter depuis n’importe quel serveur (%).
Si vous souhaitez utiliser une connexion supplémentaire à vos bases de données, vous devez la créer dans le serveur de bases de données avec les droits appropriés sur les bases de données à partir d'emplacements choisis.
Un problème supplémentaire est que vous avez géré la base de données 'mysql' et que phpmyadmin essaye par défaut de se connecter à 'db'. Donc il faut ajouter
PMA_Host: mysql
phpmyadmin environment . Je pense que MYSQL_USERNAME et PMA_ARBITRARY sont inutiles si vous travaillez avec une configuration par défaut (connexion avec root à votre serveur de bases de données)
J'ai réussi à me connecter à l'instance mysql à l'aide de l'outil de ligne de commande mysql. C'est la commande que j'ai utilisée - mysql -u root -p -h 127.0.0.1
et la saisie du mot de passe administrateur. Est-ce une solution suffisante pour vous?
vous devez lier le conteneur phpfpm à mysql.