gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:17:13 25 4
gpt4 key购买 nike

显然这是一个很难问的问题,因为尽管很简单,但似乎没有人回答过。

我在 ubuntu 12.10 服务器(无 GUI)上运行 PostgreSQL。

我的目标 - 我的问题 - 是创建一个名为“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=#

我已经弄清楚如何创建一个名为“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 | {}

没有想出如何确保用户“admin”可以连接到“mydb”数据库——也许拥有这种特权的人不需要这样做? [在我撰写本文时,我注意到我可能应该撤销管理员的 super 用户权限。]

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

$ psql -U postgres
psql: FATAL: Peer authentication failed for user "postgres"

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

谢谢,格

最佳答案

从错误消息来看,似乎身份验证设置没有正确设置。

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

当前您的配置可能对所有用户使用“Peer”身份验证,这仅意味着:仅允许该用户当前登录的用户(例如,您的 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 的报告。

关于postgresql - 如何让 psql 从 shell : $ psql -U admin -d mydb 在 ubuntu 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com