Postgres CREATE TABLESPACE failed with Permission denied
Posted by FatDBA on September 2, 2018
Hi Everyone,
This week i was busy preparing one Postgres database for migration purposes and have faced few basic problems while doing some of the rudimentary or elementary operations. Yesterday itself i was trying to create one Tablespace and was getting ‘Permission Denied’ for the defined path/location.
I tried to create this tablespace on different locations but failed every-time with same error related with permissions and interestingly permissions are okay (Directory owned by POSTGRES with RWX permissions). This left me confused about where exactly is the problem.
This is what i was trying and getting the error.
elephant=# CREATE TABLESPACE aleph location '/var/lib/pgsql/tbs'; ERROR: could not set permissions on directory "/var/lib/pgsql/tbs": Permission denied elephant=# CREATE TABLESPACE aleph location '/var/lib/pgsql'; ERROR: could not set permissions on directory "/var/lib/pgsql": Permission denied elephant=# CREATE TABLESPACE aleph location '/var'; ERROR: could not set permissions on directory "/var": Permission denied
Then all of the sudden i remember something similar i have encountered in the past while working on Oracle Databases where SELinux Policy Prevents SQLPlus From Connecting to Oracle Database. So, i decided to turn off the SELinux status, and to effectively do it i ran setenforce 0 (Or you can use setenforce Permissive )
* The above commands will switch off SELinux enforcement temporarily until the machine is rebooted. If you would like to make it permanently, edit /etc/sysconfig/selinux, enter:
# vi /etc/sysconfig/selinux
And set / update it as follows:
SELINUX=disabled
[root@fatdba ~]# setenforce 0 [root@fatdba ~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 26 Policy from config file: targeted [root@fatdba ~]# [root@fatdba ~]#
Now after changing the setting of SELinux i once again tried the same step and BOOM, it worked!
elephant=# CREATE TABLESPACE aleph location '/var/lib/pgsql/tbs'; CREATE TABLESPACE elephant=# elephant=#
Hope It Helps
Prashant Dixit
Leave a Reply