gpt4 book ai didi

database - PostgreSQL 创建表空间无权限

转载 作者:搜寻专家 更新时间:2023-10-30 21:51:04 25 4
gpt4 key购买 nike

我在为 PostgreSQL 创建表空间时遇到了问题。以下是步骤:

  1. mkdir/postgres
  2. chown postgres.postgres/postgres
  3. su - postgres
  4. psql
  5. 创建表空间 p1 位置 '/postgres'

在这一步我遇到了一个错误:

could not set permissions on directory "/postgres": Permission denied

目录所有权是正确的:

[root@dev ~]# ls -la /postgres  
总用量 8
drwxr-xr-x. 2 postgres postgres 4096 12月 2 13:17 .
dr-xr-xr-x. 28 root root 4096 12月 3 06:57 ..

用户是postgres

[root@dev contrib]# ps -ef|grep postgres  
postgres 1971 1 0 08:21 ? 00:00:01 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data

我在 CentOS 上运行。

修复:设置强制 0

最佳答案

我大胆猜测你在 Mac OS X 上,你的 PostgreSQL 正在作为用户 postgres_(注意下划线)运行,正如某些 PostgreSQL 包所使用的那样。

ps -ef | grep postgresps aux|grep postgres 应该向您显示服务器以哪个用户身份运行。确保该目录归该用户所有。

根据评论中的额外信息更新:

您使用的是 CentOS,而不是 Mac OS X。您的 PostgreSQL 以用户 postgres 身份运行,该用户与目录拥有者相同。因此,您可能遇到了 SELinux 问题。如果仅出于测试目的,您运行:

setenforce 0

然后您可以运行 CREATE TABLESPACE 命令吗? (DROP 创建表空间后,SELinux 暂时关闭;如果不这样做,然后重新启动,PostgreSQL 将无法启动)。

如果创建失败并且 SELinux 暂时禁用,您必须从 SELinux 策略中免除 PostgreSQL,在 SELinux 策略允许的位置创建表空间,或者在表空间目录上设置适当的 SELinux 属性,以便 PostgreSQL 可以对其进行操作。或者您可以完全关闭 SELinux,但这并不是真正可取的。

dmesg 或 CentOS 的 SELinux 辅助工具中可能会有提示,告诉您特定的 SELinux bool 值,您可以打开或关闭它来控制它。查看 setsebool 命令的帮助,Fedora Security Guide , CentOS SELinux howto

也许最好的选择是只更改文件的 SELinux 上下文。参见 the documentation .您可以使用 chcon,但更改将在文件系统重新标记后丢失。如链接手册的下一页所述,最好使用 semanage

关于database - PostgreSQL 创建表空间无权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20322397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com