How can I get psql to work in ubuntu from shell: $ psql -U admin -d mydb
显然这是一个非常难以提出的问题,因为很简单,似乎没有人回答过这个问题。
我在ubuntu 12.10服务器上运行PostgreSQL(没有GUI)。
我的目标 - 我的问题 - 是创建一个名为"mydb"的数据库和一个用户"admin",以便我可以从shell中以普通用户身份提供此命令并连接到数据库:
$ psql -U admin -d mydb
但我无法在任何地方找到答案。
我可以通过su'ing并运行psql命令以用户postgres身份登录:
1 2 3 4 5 6 | $ sudo su -m postgres postgres@baseubu1210dev:~$ psql psql (9.1.7) TYPE"help" FOR help. postgres=# |
我已经想出如何创建一个名为"mydb"的数据库和一个用户"admin",以便:
1 2 3 4 5 | postgres=# \du ROLE name | List OF roles Attributes | Member OF -----------+------------------------------------------------ admin | Superuser, CREATE ROLE, CREATE DB | {} postgres | Superuser, CREATE ROLE, CREATE DB, Replication | {} |
我还没弄明白如何确保用户"admin"可以连接到"mydb"数据库 - 也许有这样特权的人不需要? [在我写的时候,我注意到我应该撤销管理员的超级用户权限。]
而我真正想知道的是如何从普通用户的shell连接:
1 2 | $ psql -U postgres psql: FATAL: Peer authentication failed FOR USER"postgres" |
关于运行postgreSQL肯定是不成文的假设,我误解了,但是几个小时的搜索,查看教程等等,并没有解决问题。如果有人说这已经得到了回答,我将非常高兴,特别是如果有的话。我认为并希望答案很简单并感谢您的帮助。
谢谢,
通用电器
从错误消息中,似乎未正确设置身份验证设置。
除了数据库本身的设置外,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报道。
在Debian上,PostgreSQL默认监听localhost,因此如果你在pg_hba.conf中有一个允许TCP / IP连接的规则,那么你可以使用-h参数来匹配该规则:
1 | psql -U admin -h localhost mydb |