无需切换用户即可在 Mac 上访问 PostgreSQL

无需切换用户即可在 Mac 上访问 PostgreSQL

我有一台运行 OS X Lion (10.7.5) 的 Mac,安装了 PostgreSQL 9.2.4。我已初始化数据库集群并启动服务器,全部以用户身份完成postgres。当我尝试访问与我的 PostgreSQL 安装相关的某些目录或执行某些二进制文件时,我需要postgres先切换到用户。例如:

# Ideally I'd want this to work:
my_name$ psql
psql: FATAL:  role "my_name" does not exist

# I'd settle for this working, but it doesn't
my_name$ sudo psql
psql: FATAL:  role "root" does not exist

# I don't understand why this doesn't work but the next things does
my_name$ sudo su postgres psql
/opt/local/lib/postgresql92/bin/psql: /opt/local/lib/postgresql92/bin/psql: cannot execute binary file

# This works
my_name$ sudo su postgres
sh$ psql
psql (9.2.4)
Type "help" for help.

另一个例子:

my_name$ cd /opt/local/var/db/postgresql92/defaultdb
-bash: cd: /opt/local/var/db/postgresql92/defaultdb/: Permission denied

my_name$ sudo su postgres cd /opt/local/var/db/postgresql92/defaultdb
my_name$ pwd
/Users/my_name

my_name$ sudo su postgres
sh$ cd /opt/local/var/db/postgresql92/defaultdb
sh$ pwd
/opt/local/var/db/postgresql92/defaultdb
  1. 为什么不起作用sudo su postgres <cmd>,但是当我将切换用户和调用命令的步骤分开时,它确实起作用了?
  2. 有没有其他方法可以解决这个问题,以便我不必每次都切换用户?
  3. 更一般地讲,除了现有权限之外,有没有办法为用户授予其他用户的所有权限?例如,我可以将用户postgres的所有权限添加到my_name用户的权限中吗?

答案1

您必须在您的 postgresql 数据库中创建一个用户,并在您的 pg_hba.conf 文件中从 localhost 允许该用户 - 文件中有很多关于各种选项的示例。

然后你可以这样做:

psql -H 本地主机-U 我的用户

相关内容