在macOS上开启PostgreSQL的公网访问

前文

在《认真上网|搭建家庭网络服务》里,我有提到通过DDNS or 内网穿透、端口转发、docker等技术的组合,实现在达芬奇下多人的协同工作。

当初之所以选择在NAS上部署PostgreSQL服务,就是因为在macOS上我一直都没搞定PostgreSQL的公网访问(一部分是权限问题)。

在YouTube和Google上检索相关的教程,大多都是Linux或者WIndows Server平台的相关配置教程,更别说我们需要配置的是特定版本的PostgreSQL,以及需要搭配达芬奇进行使用了。

当时无奈之下,就只能退而求其次,转而选择在NAS进行部署(虽然坑也不少)。当然,看标题你就知道,之前的问题已经被解决了。并且现在回头看,无论是在NAS还是在macOS上,其本质都是一样的。但服务的载体不同,这决定了它们在应用场景上也各有所长,它们之间并不存在什么绝对的优劣之分。

简单而言,如果你的项目比较大需要很多人进行协作,有远程访问需求也有本地访问需求,并且有专人可以进行管理,把PostgreSQL服务配置在NAS或者服务器上,所有人通过网络共享来访问这个服务、进行达芬奇的项目创作是比较推荐的选择。

但如果你的团队规模和项目都不大,并且希望快速、简单的进行多人远程协作,那么这篇在macOS上开放PostgreSQL公网访问的文章就很适合你。

 

 

背景

首先,你得先安装DaVinci Resolve 17。此外因为17版本之后,「DaVinci Resolve Project Server」不在内嵌在DaVinci Resolve的安装包内,所以如果你需要它的话,你需要去BlackMagic的官网上去下载。

另外,在操作途中,如果发现意外修改了一些别的文件,并且不知道如何恢复的话也不用担心。在下面这个目录下有一个压缩包,解压缩这个包,会得到一个名为「postgresql-9.5.19-1-osx」的postgresql安装包。通过覆盖安装,我们可以轻松的恢复至原始状态,所以接下来放心折腾吧。

「/Library/Application Support/Blackmagic Design/DaVinci Resolve Project Server/Prereqs/postgresql.zip」

(在Finder下使用快捷键「Command + Shift + G」输入括号内的内容可以快速前往其位置)

 

修改配置文件

我们需要通过修改两个配置文件,来允许来自公网上的用户(实际为所有用户 当然账号和密码还是需要的)访问PostgreSQL。

这里的教程网络上很多。

首先找到这个目录下的「/Library/PostgreSQL/9.5/data/pg_hba.conf」。在最后加上一行「host all all 0.0.0.0/0 md5」,不要括号。

另外,再找到「/Library/PostgreSQL/9.5/data/postgresql.conf」。在最后加上一行「listen_addresses = ‘*’」,不要括号。

这样配置文件就修改完成了。

 

 

修改权限

前往「/Library/PostgreSQL/9.5」这个文件夹,你会发现这个文件夹里有许多的内容都显示无法访问。这是因为我们的权限不够,我们需要修改其权限。

选中「/Library/PostgreSQL/9.5/data」文件夹,使用快捷键「Command + I」。

截屏2021 11 06 18 58 34

 

你需要先把最右下角的锁打开,并在共享与权限一栏,点击「+」,添加自己的账户,修改权限为「读与写」,之后再点击那个一个圆圈三个点的按钮。先选择「使“xx(本用户)”成为所有者」,再选择「应用到包含的项目…」。

同样的方法,把「/Library/PostgreSQL/9.5/scripts」的权限也打开。但不必勾选「使“xx(本用户)”成为所有者」。

Q 搜索

共享与权限

 

最后,在终端里输入「chmod 700 /Library/PostgreSQL/9.5/data」。

 

 

 

重启Postgres服务

到这里修改的内容就完成了,但如果按照网络上流传的教程,在终端中使用「pg_ctl」命令管理Postgres服务,它会一直提示你权限问题。这其实就是一个坑了,macOS终端中自带的pg_ctl命令其实是另一个版本的postgresql的管理命令。

 

TsetsdeMacBookPro  po ctl  V

 

通过输入「pg_ctl -V」,发现这个管理命令对应的postgresql版本是13.2,和我们的9.5.19对应不上。

但我们其实可以在「/Library/PostgreSQL/9.5/bin/pg_ctl」这里找到一个终端可执行文件,而这其实才是我们需要的管理命令本体。

为了方便用户macOS中自带了许多常用的服务,你当然可以通过一些方法修改配置文件,让你输入「pg_ctl」时就调用「/Library/PostgreSQL/9.5/bin/pg_ctl」这样特定位置、特定版本的命令,这种操作并不提倡,这是因为你不知道在你的使用环境中是不是还有其他的环境、应用等需要调用到默认的命令。

在终端中输入「/Library/PostgreSQL/9.5/bin/pg_ctl restart -D /Library/PostgreSQL/9.5/data」,你应该会发现终端提示你已经有一个服务占用了端口5432,其pid为xxxx。值得说明的是这个端口是Postgres默认使用的端口,由于达芬奇貌似并不支持指定postgres端口号进行访问,所以这里必须得先把旧的服务kill。

你可以通过Activity Monitor找到对应的pid将其终止,暴力点也可以搜索「postgres」杀死所有进程,你还可以使用终端的kill命令来终止这个进程,kill的选择很多,看你喜欢。

再使用「/Library/PostgreSQL/9.5/bin/pg_ctl start -D /Library/PostgreSQL/9.5/data
」命令,这时候不出意外应该就能正常启动postgres服务了。

 

 

管理PostgreSQL

我们现在已经成功启动了PostgreSQL,细心的同学会发现,「/Library/PostgreSQL/9.5/pgAdmin3.app」这个app显示为不可用的状态,而这个app恰好是用于管理postgres的app。之所以不可用,其实是因为它是为32位的操作系统打造的软件,而macOS在Catalina版本之后就全面抛弃了32位应用,转向64位。

我们可以安装它的升级版——「pgAdmin4」来管理PostgreSQL。通过它,我们可以实现添加/修改数据库,以及管理用户等等更多高阶数据库管理功能。具体的用法受限于篇幅,这里就不再细述。

值得说明的是,默认的用户名为「postgres」,密码则为「DaVinci」。如果你对安全有要求,特别是考虑到未来会将Postgres服务暴露在公网之中,这里的用户名和密码建议在「pgAdmin4」中将其修改。

 

 

开机自启动

大概是修改了权限的原因,现在重启系统,会发现Postgres并不会跟随启动,所以如果重启了系统之后,需要手动输入终端命令启动Postgres服务,虽然对于不怎么需要关机的Mac而言并不算太麻烦。

为了方便,我们可以在「/Library/PostgreSQL/9.5/scripts」下(其实哪都可以 只是这个文件夹都用来放脚本 把自启动脚本放在这便于管理),新建一个名为的「autorunpsql.sh」文件,用文本编辑器打开后,输入「/Library/PostgreSQL/9.5/bin/pg_ctl start -D /Library/PostgreSQL/9.5/data」。

「Command + I」打开文件简介,修改打开方式始终为终端(需要在启用里打开“所有应用程序” 而不是“推荐的应用程序”)。

截屏2021 11 06 19 52 23

打开终端输入命令,「sudo chmod 777 /Library/PostgreSQL/9.5/scripts/autorunpsql.sh」。

打开「系统偏好设置」-「用户与群组」-「登陆项」,将这个文件添加到里面,这样一来开机自启动就完成了。

 

 

结束

参考「认真上网|搭建家庭网络服务」,最后简单设置一下端口转发或者内网穿透,你的Mac电脑就能变成一台运行Postgres服务的服务器啦~

最后附上一些常用命令。

 

 

常用命令

查看状态
/Library/PostgreSQL/9.5/bin/pg_ctl status -D /Library/PostgreSQL/9.5/data

启动
/Library/PostgreSQL/9.5/bin/pg_ctl start -D /Library/PostgreSQL/9.5/data

停止
/Library/PostgreSQL/9.5/bin/pg_ctl stop -D /Library/PostgreSQL/9.5/data

重启
/Library/PostgreSQL/9.5/bin/pg_ctl restart -D /Library/PostgreSQL/9.5/data

帮助
/Library/PostgreSQL/9.5/bin/pg_ctl –help

Default image
tshaveanidea
ts小站的拥有者
Articles: 121

Leave a Reply

%d bloggers like this: