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

时间:2019-03-10 14:43:28

标签: mysql docker docker-compose mariadb

我一直在尝试使用linuxserver映像设置nextlcoudmariadb,当我想通过nextcloud的第一个运行向导时遇到了障碍: Error message incl. all settings of first run wizard

问题

即向导第一次给我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。 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

我正在使用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

已尝试:

  1. 很多研究是空的,或者使我不得不做下一点:
  2. 因此,从错误信息中,我开始检查数据库是否确实存在:sudo docker exec -it mariadb bash。我在那里发现,由于未设置密码,因此以root用户身份使用“ mysql”访问命令行被拒绝了。 (mmmh ...我的docker-compose-file有什么问题吗?) 无论如何,我用mysql -u root -pSECRETmysql -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
    

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

5 个答案:

答案 0 :(得分:2)

我更改了localhost-> mariadb并成功了!

答案 1 :(得分:2)

我必须使用nextcloud-mariadb:3306作为连接字符串。我通过运行列出了名称和端口的$ docker ps -a来弄清楚了。

答案 2 :(得分:0)

出于好奇,我开始玩localhost-port。我选择3307是因为主机系统的mariadb运行在3306上,我不想使用它。因此,将端口localhost:3307更改为localhost:WXYZ-您将其命名为同样的错误... mmmh-将localhost更改为<your host-IP> !!!

成功

答案 3 :(得分:0)

在docker中运行Nextcloud时,添加--link mariadb:mariadb。然后,您可以使用mariadb替换localhost

答案 4 :(得分:0)

我必须使用我的自定义服务器主机名,而不是 localhost。在 Linux 上,您可以通过执行命令 hostname 来获取它。