使用Navicat连接群晖的PostgreSQL套件数据库
前言
群晖的类似 Moments、Audio station、Video Station 等套件都是使用群晖内置的一个 PostgreSQL 数据库,记录一下连接这个数据库的方法。温馨提示: 群晖多个套件均依赖此数据库,没有一定基础的同学,请做好备份,自行评估操作风险。
创建数据库用户并授权
打开ssh 连接并群晖获取 root 权限,切换到 posgres 用户,进入 psql
交互命令行,创建新用户并授权:
1 | 切换到postgres用户 |
1 | 创建用户 |
修改 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 行(Alliot的是DSM6.2版本),找到AllowTcpForwarding no
将其改为 AllowTcpForwarding yes
,保存退出(i
为编辑,编辑完后,按一下 ESC
,依次输入:wq
即可保存退出)。 直接登陆网页的 DSM 控制台,依次进入 控制面板——终端机和SNMP——终端机,将“启动SSH功能”取消勾选,应用之后,重新勾选并应用,即可重启 sshd
服务。(synoservice
没找到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 用户名; |