群晖的类似 Moments、Audio station、Video Station 等套件都是使用群晖内置的一个 PostgreSQL 数据库,记录一下连接这个数据库的方法。温馨提示: 群晖多个套件均依赖此数据库,没有一定基础的同学,请做好备份,自行评估操作风险。
创建数据库用户并授权
打开ssh 连接并群晖获取 root 权限,切换到 posgres 用户,进入 psql 交互命令行,创建新用户并授权:
1 | 切换到postgres用户 |
1 | 创建用户 |
1 | 退出postgres用户,回到root下 |
修改 pg_hba.conf,将新建的用户授权登陆:
1 | vi /etc/postgresql/pg_hba.conf |
原始内容为:
1 | # TYPE DATABASE USER ADDRESS METHOD |
我们新增一行,host all 用户名 127.0.0.1/0 md5,修改之后内容为:
1 | # TYPE DATABASE USER ADDRESS METHOD |
重新载入配置文件:
1 | su -l postgres -c "exec /usr/bin/pg_ctl reload" |
修改群晖 sshd 配置,允许端口转发
不进行此步操作,后面使用 ssh 隧道连接数据库的时候,终端会出现类似 channel 4: open failed: administratively prohibited: open failed 的报错。
1 | vi /etc/ssh/sshd_config |
在约 86 行,找到AllowTcpForwarding no 将其改为 AllowTcpForwarding yes,保存退出。
直接登陆网页的 DSM 控制台,依次进入 控制面板——终端机和SNMP——终端机,将“启动SSH功能”取消勾选,应用之后,重新勾选并应用,即可重启 sshd 服务。
使用 Navicat 连接数据库
新建——PostgreSQL,连接名随意,主机填写127.0.0.1,端口填写 PostgreSQL 监听的端口 5432,初始数据库填写 postgres,用户名、密码为前面新建数据库用户设置的,在 “SSH” 页选择使用 SSH 通道,IP、用户名、密码使用群晖的 ssh 连接信息即可。
使用 macOS 的同学如果 Navicat 自带的 SSH 通道兼容性有问题的,可以本地使用SSH隧道进行端口转发:
1 | 1234为本地监听的端口,5432 为群晖上postgreSQL的监听端口 |
之后 Navicat 连接时,端口填 5432 。
删除用户,回收权限
操作完成后,如果需要回收权限,恢复到原样。只需要删除我们新增的那行 pg_hba.conf 配置文件的内容。进入 psql 交互命令中,执行:
1 | drop user 用户名; |
即可。