我想在 Linux 服务器中创建用户和数据库。我可以使用以下代码创建用户:
su - postgres
# createuser -S -D -R myUser
但是当我尝试用代码创建数据库时:
# createdb -U myUser -p 5432 myDatabase
我收到以下错误:
createdb: could not connect to database postgres: FATAL: Ident authentication failed for user "myUser"
我是 Linux 新手,所以我无法弄清楚为什么我能够创建用户,但在创建数据库时出现与 postgres 的连接错误。并且用户身份验证也出现错误。
答案1
您需要了解有关 HBA 配置的更多信息。
有一些基本的身份验证方法:
- 相信- 每个用户都可以连接到第二列指定的数据库,其中 all 表示集群中的所有数据库(是的,不包括 template0,因为 pg_database 系统目录中的 datallowconn 设置为 false.. 没关系)
- 身份(PostgreSQL 8.4 ident sameuser 之前)- 只有实际登录(例如在控制台中使用 su
su - postgres
)的系统用户(与角色名称相同)才能连接 - md5- 每个知道角色(PostgreSQL)密码的用户都可以登录数据库
每次你尝试连接到混凝土角色和数据库即使不写也是明确的。
通常有两种连接类型:
- 当地的- Unix 域套接字
- 主持人- 使用 TCP/IP 连接
如果您不知道自己使用的是哪个,那么它是本地的。要使用 TCP/IP 连接,您需要指定 -h 选项以及 postmaster 正在监听的目标 IP。例如,您可以添加 -h localhost 或 -h 127.0.0.1,但请检查 postgresql.conf 中的 listen_adresses(据我所知默认值为 localhost,因此没问题)属性以及 HBA 中接受的客户端 IP 地址。
http://www.postgresql.org/docs/9.0/static/auth-pg-hba-conf.html
答案2
您必须在您的
~postgres/版本/数据/pg_hba.conf
e.g: for localhost
host all all 127.0.0.1/32 ident
e.g: full conf:
local all all ident
host all all 127.0.0.1/32 ident
host all myUser 127.0.0.1/32 ident
然后重新加载 postgres