google了一把,发现网上很少人把Postgresql自启动的方法写出来,能搜索到的,清一色都是使用port安装后,
然后在rc.conf中增加 postgresql_enable="YES" 就算是设置了自启动。
这个当然是对的,可是,除了通过port安装,还可以手动下载进行安装的啊,可是手工下载安装之后,却没有那样
的服务产生。如果要启动,通常是用postgres用户登录,然后
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data &
即可启动。(注:数据目录是 /usr/local/pgsql/data)
但是,如何设置自启动呢?搜罗网上,还不少人这样问,可是回答很少有满意的,
大家都说设置 postgresql_enable 即可。…… 呵呵,让人很无奈。
也有人尝试在 rc.local 中加入 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data &
可是依然是启动失败,原因很简单,FreeBSD启动时,默认都使用root用户运行这些命令,但偏偏
Postgresql是不允许使用root启动的,郁闷吧,呵呵。。
搞了那么久,现在最好的办法,就是通过root调用其它用户来执行这条命令,可行否?of course.
下面我简单写一下:
首先,用 root 进入 /etc 目录,查找有没有 rc.local 文件,如果没有,创建一个即可。
如果已经有 rc.local 文件,那么在最后面加上如下一行:
su -m postgres -c '/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data &'
如果没有 rc.local 文件的,则创建一个,并且写入:
#!/bin/tcsh
su -m postgres -c '/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data &'
说明一下,这里 -m 后面的就是指定的执行用户,我这里是 postgres ,数据目录是
/usr/local/pgsql/data,各位可以根据自己的实际情况修改。
好了,重启一下,然后top查看,你会发现 Postgresql 已经启动了。
其实就很简单,无非就是通过root指定另外一个用户执行相应的命令而已。对于其它像
Linux系统,估计也都差不多,man su 一下,查看一下su命令的参数就知道了。