在 postgres 中创建数据库时出错

在 postgres 中创建数据库时出错

我想在 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

相关内容