postgres 中SELINUX

【转载:未测试, 通常操作是 关闭 SELINUX】

Linux Postgresql Log中出现Do you want to choose a different one?的解决方法




前几天,公司要装Postgresql 数据库,并且要加入Linux的Service里,部分脚本如下:
case $1 in
start)
echo -n "Starting PostgreSQL: "
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
stop)
echo -n "Stopping PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
echo "ok"
;;
restart)
echo -n "Restarting PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
reload)
echo -n "Reload PostgreSQL: "
su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
echo "ok"
;;
status)
su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
exit 1
;; *)

在 Linux系统里用service 命令启动都是正常,但是系统重启后该服务就是起不来。后来发现Postgresql 的log中有这么一句话:Do you want to choose a different one? 刚开始就是不能理解,后来发现系统启动了SELinux,在网上一查,有的Linux 发行版中的SELinux对于 su user -c 命令不是很友好。

后来我改用runuser命令,问题就解决了。修改后的脚本如下:


case $1 in
start)
echo -n "Starting PostgreSQL: "
runuser -s /bin/bash $PGUSER -c "$DAEMON -i -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
stop)
echo -n "Stopping PostgreSQL: "
runuser -s /bin/bash $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
echo "ok"
;;
restart)
echo -n "Restarting PostgreSQL: "
runuser -s /bin/bash $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
runuser -s /bin/bash $PGUSER -c "$DAEMON -i -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
reload)
echo -n "Reload PostgreSQL: "
runuser -s /bin/bash $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
echo "ok"
;;
status)
runuser -s /bin/bash $PGUSER -c "$PGCTL status -D '$PGDATA'"
;;
*)




转载于:https://my.oschina.net/innovation/blog/155706

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值