NAS上装NextCloud连不上数据库,数据库要怎么配才对
想在公司的 NAS 上装个 NextCloud 当私有云盘,文件同步和共享都指它。套件装好了,到安装向导却卡住:数据库信息怎么填都报错——一会儿"无法连接数据库",一会儿"用户或密码不对",一会儿又是权限不足建不了表。数据库明明装上了,为什么就是连不通?
原因分析
NextCloud 的安装向导要连的是一个"给它准备好的专用数据库":库已建好、专用账户已授权。多数报错不是数据库坏了,而是准备工作和填写口径对不上。常见四类:一是数据库服务压根没启动,或端口被改过,连接直接被拒;二是向导里填了 root 账户密码——很多配置下 root 只允许本机命令行登录,且用 root 跑应用本就不该;三是没事先手工建库建用户,向导拿着不存在或无权限的账户去连;四是版本匹配问题——新版对数据库(MariaDB、PostgreSQL 等)和 PHP 版本有要求,老库配新版应用会直接报不支持的版本。
分步解决
- 先确认数据库服务在跑、端口没变。到套件或服务列表里看 MariaDB(或 PostgreSQL)是不是运行状态;默认端口前者 3306、后者 5432,改过端口的翻下配置记录,向导主机栏要写对。
- 手工建库建专用账户。进数据库命令行(套件一般提供入口),依次执行:建库
CREATE DATABASE nextcloud CHARACTER SET utf8mb4;,建用户CREATE USER 'ncuser'@'localhost' IDENTIFIED BY '密码';,授权GRANT ALL ON nextcloud.* TO 'ncuser'@'localhost';,刷新权限。密码别用含特殊符号的组合,表单转义出过不少这类错。 - 按口径填向导:数据库用户名密码填第 2 步建的专用账户,不是 root;数据库名对上 nextcloud;数据库主机按实际位置填——同机一般填 localhost,数据库在容器里或另一台机器上就填内网 IP,必要时带端口。
- 核对版本匹配。如果报的是不支持的数据库版本或 PHP 版本提示,先核对版本要求:老数据库先升级再装;套件中心装的带配套 PHP,手动部署的自己确认 PHP 模块装齐没。
- 还报错就对着日志读。把 NextCloud 安装日志和数据库错误日志对照着读:connection refused 指向服务未启动或端口不通;access denied 指向账户密码或授权范围(注意账户限定来源机器);unknown database 指向库名拼写。日志原文比向导弹窗的笼统提示有用得多。
预防
给应用一律配专用数据库账户,root 只留给管理员做维护;数据库与应用的升级放在同一次维护窗口,版本要求先核对再动手;备份把数据库导出文件和数据目录一起打包,缺一半恢复不了完整环境;主机、端口、库名、账户记进内档,迁移排障直接翻。