gpt4 book ai didi

postgresql - 如何使普通 linux 用户无需 sudo 访问权限即可访问 postgres 数据库?

转载 作者:行者123 更新时间:2023-12-05 04:06:16 25 4
gpt4 key购买 nike

我们在Centos7上安装了一个postgres数据库服务器(10.3),并创建了一个名为“db_name”的数据库。我们有数据库访问权限。 pg_hba.conf中的设置如下:

# "local" is for Unix domain socket connections only
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident

当我有 sudo 访问权限时,我可以访问数据库“db_name”。

[root@localhost bin]# sudo -s       
[root@localhost bin]# psql -U db_name db_user
psql (10.3)
Type "help" for help.

db_name=>

当我尝试以普通 linux 用户身份访问数据库时,出现以下错误:

[linuxuser@localhost bin]# psql -U db_name db_user
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我们想要限制某些用户 sudo 访问的原因是我们的报告专家需要访问数据库“db_name”,但我们不希望他们拥有执行其他操作的 sudo 权限。

我应该做什么样的设置才能让它工作?谢谢!

最佳答案

我找到了解决方案。问题的原因是不存在/var/run/postgresql/.s.PGSQL.5432 文件。默认情况下,unix_socket_directories 是在 postgresql.conf 中设置的 '/tmp'。

出于某种原因,普通 linux 用户不会查看/tmp/.s.PGSQL.5432,而是查看/var/run/postgresql/.s.PGSQL.5432 文件。

所以修复如下:

cd /var/run
mkdir postgresql
cd postgresql/
ln -s /tmp/.s.PGSQL.5432 .s.PGSQL.5432

以下命令也有效。

psql -h /tmp -U db_user db_name 

关于postgresql - 如何使普通 linux 用户无需 sudo 访问权限即可访问 postgres 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50035569/

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