群晖Container Manager中ProjectSend无法连接相邻MariaDB容器的问题
问题:ProjectSend容器无法连接同网络下的MariaDB容器
在群晖Synology Container Manager中部署了ProjectSend和MariaDB两个容器,均正常运行。首次通过Firefox访问ProjectSend进行数据库配置时,GUI中的Host、数据库名、用户名、密码均无法通过验证(无绿色勾选)。
已做排查:
- 通过SSH成功访问MariaDB,确认用户账号权限为
%(允许任意来源访问) - 在compose文件及数据库中设置
--default-authentication-plugin=mysql_native_password适配ProjectSend的SHA1密码要求 - 尝试过localhost、MariaDB容器IP、服务名作为Host
- 两个容器同属
projectsend_default网络,镜像均为latest版本 - 按先启动MariaDB再启动ProjectSend的顺序重启过容器,但仍无法连接
附COMPOSE配置(密码已替换为x):
version: "2.1" services: projectsend: image: linuxserver/projectsend container_name: projectsend environment: - PUID=998 - PGID=100 - TZ=America/Denver - MAX_UPLOAD=5000 volumes: - /volume1/docker/projectsend/config:/config #Config Volume Goes Here - /volume1/docker/projectsend:/data #File Storage Volume Goes Here ports: - 8010:80 restart: unless-stopped db: image: mariadb container_name: mariadb-projectsend environment: MYSQL_ROOT_PASSWORD: xxxxxxx MYSQL_DATABASE: projectsend MYSQL_USER: user MYSQL_PASSWORD: xxxxxxx TZ: America/Denver volumes: - /volume1/docker/projectsend/mariadb:/var/lib/mysql #Database Volume Goes Here ports: - "3306:3306" command: --default-authentication-plugin=mysql_native_password restart: unless-stopped
排查与解决方案
验证容器网络连通性
进入ProjectSend容器内部,测试与MariaDB服务名的连通性:docker exec -it projectsend ping db如果ping不通,说明网络存在异常。可以在compose文件末尾显式定义自定义网络,确保两个容器在同一网络组:
networks: default: name: projectsend_net执行命令重新部署容器:
docker-compose down && docker-compose up -d确认数据库用户的权限与加密方式
进入MariaDB容器,登录后执行SQL语句验证用户信息:docker exec -it mariadb-projectsend mysql -u root -p输入root密码后执行:
SELECT user, host, plugin FROM mysql.user WHERE user='user';确保
host值为%,plugin值为mysql_native_password。若存在异常,重新设置用户密码并刷新权限:ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY '你的实际密码'; FLUSH PRIVILEGES;正确填写ProjectSend配置页的Host
在ProjectSend的数据库配置GUI中,Host必须填写MariaDB的服务名db——同一Docker网络下,容器通过服务名实现稳定的内部访问,不要填写localhost(指向容器自身)、宿主机IP或容器IP。检查端口配置
确认MariaDB容器未修改默认端口3306,ProjectSend配置页的数据库端口保持默认3306即可。清除ProjectSend缓存
若之前多次尝试错误配置导致缓存残留,可直接重启ProjectSend容器:docker restart projectsend
内容的提问来源于stack exchange,提问作者cofbd
相关产品推荐
相关产品推荐

