显然这是一个非常难以提出的问题,因为很简单,似乎没有人回答过这个问题.
我在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
从错误消息中,似乎未正确设置身份验证设置.
除了数据库本身的设置外,PostgreSQL还使用配置文件(pg_hba.conf)来指定每个用户,主机和数据库可以使用的身份验证机制.您可以指定用户只能通过密码/ md5密码连接,甚至"无需身份验证"
目前,您的配置可能对所有用户使用"对等"身份验证,这仅表示:仅允许该用户(如果它是当前登录的用户)(例如,您的shell用户也应称为"admin").从您的问题来看,这不是您想要的,您可能希望使用密码或md5身份验证机制.
我认为这些页面将为您提供所需的答案:
官方文件:
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)
| 归档时间: |
|
| 查看次数: |
17254 次 |
| 最近记录: |