如何从shell获取psql在ubuntu中工作:$ psql -U admin -d mydb

zab*_*uti 9 postgresql

显然这是一个非常难以提出的问题,因为很简单,似乎没有人回答过这个问题.

我在ubuntu 12.10服务器上运行PostgreSQL(没有GUI).

我的目标 - 我的问题 - 是创建一个名为"mydb"的数据库和一个用户"admin",以便我可以从shell中以普通用户身份提供此命令并连接到数据库:

$ psql -U admin -d mydb

但我无法在任何地方找到答案.

我可以通过su'ing并运行psql命令以用户postgres身份登录:

$ sudo su -m postgres
postgres@baseubu1210dev:~$ psql
psql (9.1.7)
Type "help" for help.

postgres=# 
Run Code Online (Sandbox Code Playgroud)

我已经想出如何创建一个名为"mydb"的数据库和一个用户"admin",以便:

postgres=# \du
 Role name |                 List of roles Attributes       | Member of 
-----------+------------------------------------------------
 admin     | Superuser, Create role, Create DB              | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
Run Code Online (Sandbox Code Playgroud)

还没弄明白如何确保用户"admin"可以连接到"mydb"数据库 - 也许有这样的权限的人不需要?[在我写的时候,我注意到我应该撤销管理员的超级用户权限.]

而我真正想知道的是如何从普通用户的shell连接:

$ psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

关于运行postgreSQL肯定是不成文的假设,我误解了,但是几个小时的搜索,查看教程等等,并没有解决问题.如果有人说这已经得到了回答,我将非常高兴,特别是如果有的话.我认为并希望答案很简单并感谢您的帮助.

谢谢,ge

tha*_*tah 8

从错误消息中,似乎未正确设置身份验证设置.

除了数据库本身的设置外,PostgreSQL还使用配置文件(pg_hba.conf)来指定每个用户,主机和数据库可以使用的身份验证机制.您可以指定用户只能通过密码/ md5密码连接,甚至"无需身份验证"

目前,您的配置可能对所有用户使用"对等"身份验证,这仅表示:仅允许该用户(如果它是当前登录的用户)(例如,您的shell用户也应称为"admin").从您的问题来看,这不是您想要的,您可能希望使用密码或md5身份验证机制.

我认为这些页面将为您提供所需的答案:

http://web.archive.org/web/20131001194046/http://blog.deliciousrobots.com/2011/12/13/get-postgres-working-on-ubuntu-or-linux-mint/(存档版)

官方文件:

http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

记得在修改pg_hba.conf文件后重新加载postgresql!

更新

我提到的原始博客帖子现在处于离线状态,链接现在指向存档版本.感谢@O_the_Del报告.


小智 5

在Debian上,PostgreSQL默认监听localhost,因此如果你在pg_hba.conf中有一个允许TCP/IP连接的规则,那么你可以使用-h参数来匹配该规则:

psql -U admin -h localhost mydb
Run Code Online (Sandbox Code Playgroud)