我已经在 Ubuntu 16.04 服务器上安装了 Postgres,但我在公司环境中工作并且无法执行此操作sudo -u postgres
(我有 sudo 权限,但不能冒充其他用户)。
有没有其他方式可以让我与新的 Postgres 服务进行交互,或者在设置过程中将自己指定为管理员用户?
答案1
假设您有权在 下编辑 PostgreSQL 配置,您可以授予自己必要的权限/etc/postgresql
。
首先,检查安装了哪个版本的 PostgreSQL 以及集群/实例的名称(查看 的输出pg_lsclusters
)。例如,对于 Ubuntu 16.04,版本将9.5
与默认存储库一起使用,因为这是 2016 年的最新版本,并且实例将被命名为main
。
在这种情况下,配置位于/etc/postgresql/9.5/main
(否则请根据版本/集群更改路径)。在配置中,您可以声明从 Unix 用户名到 postgres 超级用户数据库帐户的映射,例如:
在/etc/postgresql/9.5/main/pg_ident.conf
# MAPNAME SYSTEM-USERNAME PG-USERNAME
mymap myusername postgres
在 中/etc/postgresql/9.5/main/pg_hba.conf
,作为第一条规则(顺序很重要):
# local DATABASE USER METHOD [OPTIONS]
local all postgres peer map=mymap
然后重新加载(sudo pg_ctlcluster 9.5 main reload
),Unixmyusername
帐户应该能够以超级用户身份在本地连接:
$ psql -U postgres -d postgres
否则,请检查以下服务器日志/var/log/postgresql