phpMyAdmin не подключается к MariaDB, а MariaDB не устанавливает переменную MYSQL_ROOT_PASSWORD по умолчанию в docker compose - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь создать docker-compose с MariaDB и phpMyAdmin Docker изображений, однако у меня возникают следующие проблемы: ни MariaDB, ни phpMyAdmin не используют среду переменные внутри их файлов, другими словами, MariaDB не устанавливает пароль по умолчанию, описанный в переменной MYSQL_ROOT_PASSWORD, а phpMyAdmin не может подключиться к MariaDB, даже если я вручную установил новый пароль для MariaDB.

На терминале MariaDB показывает следующий вывод, когда я запускаю docker compose за один раз:

dgi_catalog_db       | PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
dgi_catalog_db       | To do so, start the server, then issue the following commands:
dgi_catalog_db       | 
dgi_catalog_db       | '/usr/bin/mysqladmin' -u root password 'new-password'
dgi_catalog_db       | '/usr/bin/mysqladmin' -u root -h  password 'new-password'
dgi_catalog_db       | 
dgi_catalog_db       | Alternatively you can run:
dgi_catalog_db       | '/usr/bin/mysql_secure_installation'
[...]
dgi_catalog_db       | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.

Когда я пытаюсь подключиться к MariaDB через phpMyAdmin без установки пароля по умолчанию, следующее сообщение показывает:

mysqli_real_connect(): (HY000/2002): Connection refused

Затем я попадаю в контейнер и устанавливаю новый пароль вручную:

$ docker exec -it dgi_catalog_db /bin/bash

# mysqladmin -u root password 'password'

Если я пытаюсь снова подключиться через phpMyAdmin, я снова получаю ту же ошибку:

mysqli_real_connect(): (HY000/2002): Connection refused

Затем я попытался перезапустить свои контейнеры и снова подключиться через phpMyAdmin, и они показывают следующие сообщения:

  • phpMy Админ в веб-интерфейсе:
Packets out of order. Expected 0 received 1. Packet size=69
mysqli_real_connect(): Error while reading greeting packet. PID=35
mysqli_real_connect(): (HY000/2006): MySQL server has gone away
  • MariaDB на терминале:
dgi_catalog_db       | 2020-01-15 12:36:36 8 [Warning] Aborted connection 8 to db: 'unconnected' user: 'unauthenticated' host: '172.29.0.3' (This connection closed normally without authentication)

Я уже пробовал некоторые решения на inte rnet (например, это один ), но я не смог решить проблему.

Я использую Ubuntu 16.04.6 LTS и отправляю свои файлы ниже.

Может ли кто-нибудь помочь мне, пожалуйста? Заранее спасибо.

структура проекта

У меня есть папка с именем catalog со следующей структурой:

.
├── docker-compose.yml
└── env_files
    ├── db.env
    └── phpmyadmin.env

Файлы описано позже.

docker -compose.yml:

version: '3'

services:
  dgi_catalog_db:
    container_name: dgi_catalog_db
    image: mariadb:10.4.11
    restart: always
    volumes:
      - ../data/mysqldata:/var/lib/mysql
    env_file:
      - ./env_files/db.env
    networks:
      - dgi_catalog
    ports:
      - 3311:3306

  dgi_catalog_admin:
    container_name: dgi_catalog_admin
    image: phpmyadmin/phpmyadmin:4.9
    restart: always
    env_file:
      - ./env_files/phpmyadmin.env
    networks:
      - dgi_catalog
    ports:
      - 8099:80

networks:
  dgi_catalog:
    driver: bridge

../data/mysqldata Том может быть другой папкой.

./env_files/db.env

MYSQL_ROOT_PASSWORD=password

. / env_files / phpmyadmin.env

PMA_HOST=dgi_catalog_db
PMA_ARBITRARY=1

РЕДАКТ. 1:

Я не нашел решения, но думаю, что обнаружил главную проблему: MariaDB очень долго инициализируется. Через 20 минут после инициализации docker составьте, MariaDB напечатал mysqld: ready for connections., и мне удалось подключиться к моей базе данных через phpMyAdmin.

dgi_catalog_db       | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
dgi_catalog_db       | 2020-01-15 14:06:41 10 [Warning] 'proxies_priv' entry '@% root@fbbf075da453' ignored in --skip-name-resolve mode.
dgi_catalog_db       | 2020-01-15 14:06:41+00:00 [Note] [Entrypoint]: Stopping temporary server
[...]
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Warning] 'proxies_priv' entry '@% root@fbbf075da453' ignored in --skip-name-resolve mode.
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] Reading of all Master_info entries succeeded
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] Added new Master_info '' to hash table
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] mysqld: ready for connections.
dgi_catalog_db       | Version: '10.4.11-MariaDB-1:10.4.11+maria~bionic'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
dgi_catalog_db       | 2020-01-15 14:06:49 0 [Note] InnoDB: Buffer pool(s) load completed at 200115 14:06:49

Существует открытая проблема в Github об этом. Очевидно, что если я использую переменную -e MYSQL_INITDB_SKIP_TZINFO=1, MariaDB будет инициализироваться быстрее, но у меня не будет информации о часовом поясе.

...