68

我使用 postgresql 命令'createuser myusername'。它总是提示我输入密码。如果我将密码留空,则会出现未指定密码的错误。

我只是想创建一个使用空白/无密码的用户,而我无法在 mac os x 下使用 Postgresql 9 来做到这一点。

我应该采取哪些步骤来创建没有密码的用户。该命令总是要求我输入密码。

4

4 回答 4

72

解决这个问题是createuser行不通的。根据man页面createuser,它说如果您确实需要密码并设置,登录将失败--no-passwordcreateuser只是创建一个用户。它不决定用户必须如何进行身份验证。

身份验证主要在 中处理pg_hba.conf,它决定在登录时是否需要密码。我从未在 OS X 上运行过 PostgreSQL。在 Linux 上,我的发行版的 stock conf 如下所示:

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     ident
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

确保您有类似第一行用于开发访问的内容。注意:psql如果没有--host设置选项,将尝试使用 unix 套接字连接。如果您尝试连接,将使用第二行psql --host localhost

于 2011-03-24T18:51:19.467 回答
39

采用.pgpass

与其创建没有密码的用户,另一种方法是创建一个带有密码的.pgpass 文件以自动提供密码。所有使用 libpq 进行连接的应用程序都会尊重这一点,除了 JDBC 驱动程序和 .NET 驱动程序之外,几乎所有应用程序都会遵守这一点。

.pgpass以下是如何使用正确的文件权限为用户“foobar”和密码“password”创建示例文件:

echo 'localhost:*:*:foobar:password' >> ~/.pgpass
chmod 600 ~/.pgpass
于 2011-03-24T18:36:47.283 回答
13

为 PG 用户更改用户密码的另一种方法(我更喜欢它)是登录到 postgres 控制台(作为postgres本地 PC 上的用户),并发出 SQL 请求:

$ sudo -u postgres psql -w

# ALTER USER postgres WITH PASSWORD '';
于 2016-03-02T16:42:24.020 回答
3
postgres=# ALTER USER postgres WITH PASSWORD '';
NOTICE:  empty string is not a valid password, clearing password
ALTER ROLE
postgres=# 
于 2019-07-25T22:02:23.023 回答