将 PGDATA 移动到 Fedora 17

来自 PostgreSQL 维基
跳转到导航跳转到搜索

将 PGDATA 移动到 Fedora 17、18 或 19 中 /home 下面的目录

在启用了 SELinux 的系统上,移动 PGDATA 可能是一个挑战。在我的情况下,我希望 PGDATA 位于我的加密 /home 分区上。以下是 Fedora 17 到 19 的操作方法。

# new home directory. create this, change owner to postgres:postgres, and
# change home dir for user "postgres" in /etc/passwd.
PGHOME=/home/postgres


# change PGDATA in systemd service file
PGDATA="$PGHOME""/data"
sed "s#^Environment=PGDATA=.*#Environment=PGDATA=$PGDATA#" /usr/lib/systemd/system/postgresql.service > /etc/systemd/system/postgresql.service


# change PGHOME selinux context
semanage fcontext -a -t postgresql_db_t "$PGHOME(/.*)?"
restorecon -R -v $PGHOME


# allow postgres to search /home
cd /root
mkdir selinux.local
cd selinux.local
chcon -R -t usr_t .
ln -s /usr/share/selinux/devel/Makefile .
touch postgresqlhome.fc
touch postgresqlhome.if

cat > postgresqlhome.te <<EOF
module postgresqlhome 0.1;

require {
        class dir search; 
        class lnk_file read;

        type home_root_t;
        type postgresql_t;
        type var_lib_t;
};

# Allow postgresql to search directory /home
allow postgresql_t home_root_t:dir search; 
EOF

make
semodule -i postgresqlhome.pp