“建立数据库连接时出错”

rm5edbpk  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(426)

我正在尝试用docker compose在本地设置wordpress+mysql,并且不断出现臭名昭著的“建立数据库连接时出错”错误。我在运行mojave的mac上,已经将127.0.0.1Map到 mysite.local 低于 /etc/hosts . 以下是my 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代理容器来运行它。您还可以看到我也在运行phpmyadmin,而且运行得很好-我可以使用compose文件中指定的密码登录,并且可以看到数据库具有正确的名称并从下面的sql转储文件填充 ./db/initdb.d . 也 docker exec -it <container_id> bin/bash 向我显示wp卷已经装入容器,wp-config.php文件就在那里。最初我只是挂载wp contents文件夹,但即使挂载整个wp文件夹也会出现同样的错误。我也尝试过不同版本的mysql(5.6,5.7,最新版本)。所有的错误都是一样的。非常令人沮丧。
更让人沮丧的是,几个月前我就把这一切都搞定了。这几乎是第一次成功。虽然现在有了更多的内容,但实际上什么都没有改变,所以db dump文件要大得多(c。14mb)。我可能做错了什么?
如果我访问mysite.local,我会得到'建立数据库连接时出错'。如果我访问mysite.local/wp/我会得到apache“内部服务器错误”
n、 b:该网站最初的开发是在127.0.0.1的ampps wordpress安装下进行的。我只是将db导出到一个转储文件中,并将所有出现的127.0.0.1更改为 mysite.local .
更新:设置 WP_DEBUGtrue 显示以下浏览器错误消息:
警告:mysqli\u real\u connect():服务器请求了客户端未知的身份验证方法[caching\u sha2\u password],位于/var/www/html/wp includes/wp-db.php的第1531行
这是wp includes/wp-db.php中第1530-33行的内容:

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 );
}
jm81lzqq

jm81lzqq1#

好吧,我通过降级到MySQL5.7解决了这个问题(我在帖子中提到了那个版本,但当时我遇到了其他错误)。现在一切正常。似乎和这个问题有关。

相关问题