Настройка WordPress + MySQL с Docker Compose - «Ошибка при установлении соединения с базой данных» - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь настроить WordPress + MySQL локально с помощью Docker Compose, и я продолжаю получать печально известную ошибку «Ошибка при установлении соединения с базой данных».Я на Mac под управлением Mojave, и у меня 127.0.0.1 сопоставлены с mysite.local в /etc/hosts.Ниже приведен мой docker-compose.yml (очевидно, «mysite» и записи пароля являются подстановками):

version: '3'

services:
  mysite-wp-db:
    image: mysql:latest
    volumes:
      - ./db/initdb.d:/docker-entrypoint-initdb.d
    restart: always
    ports: 
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root_pwd
      MYSQL_DATABASE: wordpress
      MYSQL_USER: some_user
      MYSQL_PASSWORD: pwd

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: mysite-wp-db
      MYSQL_ROOT_PASSWORD: root_pwd
      PMA_ABSOLUTE_URI: http://mysite.local/
    ports:
      - "8080:80"
    restart: always
    depends_on: 
      - mysite-wp-db

  mysite-wp:
    depends_on:
      - mysite-wp-db
    image: wordpress:latest
    restart: always
    expose:
      - "80"
    environment:
      - VIRTUAL_PORT=80
      - VIRTUAL_HOST=mysite.org,mysite.com,mysite.local
    volumes:
      - ./wp:/var/www/html

networks:
  default:
    external:
      name: mysite-nginx-proxy

Я запускаю это с использованием популярного контейнера jwilder / nginx-proxy.Также вы можете видеть, что я также запускаю phpmyadmin, и это работает нормально - я могу войти, используя пароли, указанные в файле compose, и я вижу, что база данных имеет правильное имя и заполняется из файла дампа sql под ./db/initdb.d.Также docker exec -it <container_id> bin/bash показывает мне, что том wp был смонтирован в контейнер, и там есть файл wp-config.php.Первоначально я просто монтировал папку wp-content, но даже монтирование всей папки wp выдает мне ту же ошибку.Я также пробовал различные версии MySQL (5.6, 5.7, последняя версия).Все выдают одну и ту же ошибку.Очень расстраивает.

Еще более расстраивает то, что у меня все это работало несколько месяцев назад.Это сработало практически впервые.Ничего действительно не изменилось, хотя теперь контента стало намного больше, поэтому файл дампа БД стал намного больше (около 14 МБ).Что я мог делать не так?

Если я захожу на mysite.local, я получаю «Ошибка при установлении соединения с базой данных».Если я захожу на mysite.local / wp /, я получаю Apache «Внутренняя ошибка сервера»

Примечание: начальная разработка сайта произошла при установке WordPress AMPPS, на 127.0.0.1.Я просто экспортировал базу данных в файл дампа и изменил все вхождения 127.0.0.1 на mysite.local.

ОБНОВЛЕНИЕ : установка WP_DEBUG на true дает мне следующий браузерсообщение об ошибке:

Предупреждение: mysqli_real_connect (): сервер запросил метод аутентификации, неизвестный клиенту [caching_sha2_password] в /var/www/html/wp-include/wp-db.php в строке 1531

И это то, что у меня есть для строк 1530-33 в wp-includes / wp-db.php:

if ( WP_DEBUG ) {
  mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
} else {
  @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
}

1 Ответ

0 голосов
/ 28 ноября 2018

ОК. Я исправил это путем понижения до MySQL 5.7 (я упоминал эту версию в своем посте, но в то время я получал другие ошибки).Теперь все работает как положено.Кажется, связано с этой проблемой.

...