[Docker]: подключение PHPMyAdmin к MySQL не работает

mysql docker phpmyadmin

35703 просмотра

6 ответа

Я пытаюсь подключить PHPMyAdmin-Container к MySQL-Container для просмотра баз данных.

Я запустил контейнер MySQL через $ docker run --name databaseContainer -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

и PHPMyAdmin-Container через $ docker run --name myadmin -d --link databaseContainer:mysql -p 8080:8080 phpmyadmin/phpmyadmin

При попытке войти на PHPMyAdmin я получаю: mysqli_real_connect (): php_network_getaddresses: getaddrinfo не удалось: имя не разрешается

а также

mysqli_real_connect (): (HY000 / 2002): php_network_getaddresses: сбой getaddrinfo: имя не разрешается

Кстати, я также запустил WordPress контейнер и также связал его с MySQL, там он работает ...

Автор: Pascal Источник Размещён: 08.11.2019 11:20

Ответы (6)


33 плюса

Решение

Вместо того, чтобы запускать их один за другим, используйте docker-compose.

Создайте файл docker-compose.yml

version: '2'
services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD:my-secret-pw
    ports:
      # just if you also want to access it directly from you host
      # node neede for phpmyadmin
      - "3306:3306"
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - db
    ports:
      - "8080:8080"

Затем запустите его, используя docker-compose upв той же папке, где находится ваш docker-compose.ymlфайл. Получите доступ к PHPmyadmin с помощью браузера и используйте «db» в качестве имени хоста вашей базы данных, поскольку это имя службы в docker-compose.ymlфайле и, следовательно, может быть разрешено с помощью внутренней службы DNS докеров для фактического ip док-контейнера. Все ссылки настраиваются для вас автоматически.

Это намного проще - докер работает слишком сложно и не практично для этих вещей - никогда.

Подсказка: если docker-compose не установлен на вашем компьютере, установите его с помощью этого официального документа https://docs.docker.com/compose/install/ (выходит за рамки)

Автор: Eugen Mayer Размещён: 20.08.2016 04:05

12 плюса

В файле конфигурации phpmyadmin / phpmyadmin (/www/config.inc.php) по умолчанию указывается имя хоста сервера базы данных, если 'db':

$ hosts = array ('db');

Поэтому, если ваш контейнер имени базы данных не 'db', вы должны добавить переменную окружения PMA_HOST = (или PMA_HOSTS, если серверы с несколькими базами данных) с правильным именем (databaseContainer в вашем случае)

Автор: JL M Размещён: 15.11.2016 11:39

3 плюса

ПОДАРОК ​​вы начали контейнер MySQL как:

$ docker run --name databaseContainer -e MYSQL_ROOT_PASSWORD = my-secret-pw -d mysql

Затем вы должны создать phpmyadmin следующим образом:

$ docker run --name myadmin -d --link mysql: db -p 8080: 8080 phpmyadmin / phpmyadmin

На самом деле желательно, чтобы вы включили сеть. Итак, вы должны иметь:

$ docker run --name databaseContainer --network myDockerNetwork -e MYSQL_ROOT_PASSWORD = my-secret-pw -d mysql

А ТАКЖЕ

$ docker run --name myadmin -d --link mysql: db --network myDockerNetwork -p 8080: 8080 phpmyadmin / phpmyadmin

Сначала убедитесь, что ваша сеть создана:

$ docker network создать myDockerNetwork

Автор: mtebong Размещён: 06.09.2018 03:14

2 плюса

docker run --name db -e MYSQL_ROOT_PASSWORD=mypass -d mysql:5.7

docker run -p 80:80 --link db:mysql phpmyadmin/phpmyadmin

Попробуйте выполнить приведенную выше команду, она будет работать, так как phpmyadmin, возможно, жестко закодировал в своей реализации имя conatiner сервера mysql, равное db.

Если вы все еще хотите дать вашему db-серверу уникальное имя, добавьте PMA_HOSTпеременную окружения:

docker run --name myadmin -d --link mysqlserver:mysql -p 8080:80 -e PMA_HOST=mysqlserver phpmyadmin/phpmyadmin

mysqlserver это имя для вашего сервера базы данных mysql.

Автор: AKASH DUBEY Размещён: 16.05.2018 11:08

1 плюс

У меня была такая же ошибка при установке docker с использованием laradock, а затем при запуске docker-compose. Из конфигурации по умолчанию эта ошибка выдается при попытке войти в phpMyAdmin (с использованием текущих изображений по состоянию на октябрь 2018 г.). Ошибка не присутствовала при запуске Docker.

Для docker-compose.yml (версия 3) одной из причин является то, что службы по умолчанию работают в разных сетях. Для всех, у кого есть эта проблема, вот конфигурация, которая работает для mysql и phpmyadmin.

Внутри файла "docker-compose.yml" в разделе "services":

### db ###################################################
    db:
      image: mysql:5.7
      container_name: db
      environment:
        - MYSQL_ROOT_PASSWORD=mypass
      networks:
       - backend

### MySQL ################################################
    mysql:
      build:
        context: ./mysql
        args:
          - MYSQL_VERSION=${MYSQL_VERSION}
      environment:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      volumes:
        - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      ports:
        - "${MYSQL_PORT}:3306"
      networks:
        - backend

## phpMyAdmin ###########################################
    phpmyadmin:
      build: ./phpmyadmin
      environment:
        - PMA_ARBITRARY=1
        - PMA_HOST=db
        - MYSQL_USER=${PMA_USER}
        - MYSQL_PASSWORD=${PMA_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${PMA_ROOT_PASSWORD}
      ports:
        - "${PMA_PORT}:80"
      depends_on:
        - db
        - mysql
      networks:
        - frontend
        - backend

Отредактируйте файл ".env" следующим образом:

### MYSQL #################################################

MYSQL_VERSION=5.7
MYSQL_DATABASE=db
MYSQL_USER=root
MYSQL_PASSWORD=mypass
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=mypass
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

### PHP MY ADMIN ##########################################

# Accepted values: mariadb - mysql

PMA_DB_ENGINE=mysql

# Credentials/Port:

PMA_USER=default
PMA_PASSWORD=secret
PMA_ROOT_PASSWORD=secret
PMA_PORT=8080

Добавьте следующую строку в файл "/ etc / hosts":

127.0.0.1   localhost

Предполагая, что вы также используете nginx, и эта конфигурация находится в другом месте вашего "docker-compose.yml", вы можете создать и запустить эти сервисы с помощью:

docker-compose up -d mysql nginx db phpmyadmin

Затем перейдите к localhost: 8080 в вашем браузере и войдите под именем пользователя «root» и паролем «mypass» (оставьте поле сервера пустым).

Автор: Ivor Размещён: 04.10.2018 04:03

1 плюс

В моем случае я использовал MySQL 8.0, и оказалось, что mysql ввел новый идентификатор пароля, который не поддерживается phpmyadmin. Смотрите этот ответ .

Автор: vivanov Размещён: 02.01.2019 12:23
Вопросы из категории :
32x32