docker 上的 nextcloud 和 mariadb(两者): SQLSTATE[HY000] [2002] 没有这样的文件或目录

akr*_*rea 4 mysql mariadb docker docker-compose

我一直在尝试使用 Linux 服务器映像设置NextcloudMariaDB,但当我想要完成 Nextcloud 的首次运行向导时遇到了障碍:

错误消息包括  首次运行向导的所有设置

问题

即向导给我的第一次Error while trying to create admin user: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory

问题:

这是从哪里来的以及如何解决这个问题?

系统

我正在使用Amahi 11并已从存储库安装了 docker。码头工人版本:

  Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:48:52 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:19:08 2018
  OS/Arch:          linux/amd64
  Experimental:     false
Run Code Online (Sandbox Code Playgroud)

我正在使用 docker-compose 启动 nextcloud 和 mariadb。以下是 mariadb 的内容:

version: '2'
  services:
    mariadb:
      image: linuxserver/mariadb
      container_name: mariadb
      environment:
        - PUID=XX
        - PGID=YYY
        - MYSQL_ROOT_USER=root
        - MYSQL_ROOT_PASSWORD=secret
        - MYSQL_DATABASE=nextcloud
      volumes:
        - <path/to/my/folder>:/config
      ports:
        - 3307:3306
      restart: unless-stopped
Run Code Online (Sandbox Code Playgroud)

已经尝试过:

  1. 大量的研究,结果都是空的,或者引导我做下一点:

  2. 因此,从错误信息开始,我开始检查数据库是否确实存在:sudo docker exec -it mariadb bash。我发现,由于未设置密码,root 的“mysql”命令行访问被拒绝。(嗯...我的 docker-compose-file 有问题吗?)无论如何,我用mysql -u root -pSECRET和纠正了这个问题mysql -u root --password=SECRET。我发现show databases;没有nextcloud数据库。(我的 docker-compose-file 一定有问题。)所以我也创建了它(create database nextcloud;)。数据库现在已正确显示,我在<path/to/my/folder>. 结果:没有变化,问题仍然存在。

  3. 我对我的 docker-compose-file 做了一些更多的编辑:

    version: '2'
      services:
        mariadb:
          image: linuxserver/mariadb
          container_name: mariadb
          environment:
            - MYSQL_ROOT_PASSWORD=secret
            - MYSQL_DATABASE=nextcloud
            - PUID=XX
            - PGID=YYY
          volumes:
            - <path/to/my/folder>:/config
          ports:
            - 3307:3306
          restart: unless-stopped
    
    Run Code Online (Sandbox Code Playgroud)

所以我改变了层次结构并消除了这条MYSQL_ROOT_USER=root线。重新启动时我可以mysql -u root --password=SECRET显示nextcloud数据库。然而,我不确定这些更改是否仍保留在我上次(手动)更改的卷中。结果:问题仍然存在。

小智 5

我改变了localhost->mariadb并且它起作用了!