我一直在尝试使用linuxserver映像设置nextlcoud和mariadb,当我想通过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
sudo docker exec -it mariadb bash
。我在那里发现,由于未设置密码,因此以root用户身份使用“ mysql”访问命令行被拒绝了。 (mmmh ...我的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>
中找到了它。 结果:没有变化,问题仍然存在。我在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
数据库。是的,我不确定,这些更改是否仍保留在我上次(手动)更改之后的数量中。 结果:问题仍然存在。
答案 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
来获取它。