我使用 postgresql 命令'createuser myusername'。它总是提示我输入密码。如果我将密码留空,则会出现未指定密码的错误。
我只是想创建一个使用空白/无密码的用户,而我无法在 mac os x 下使用 Postgresql 9 来做到这一点。
我应该采取哪些步骤来创建没有密码的用户。该命令总是要求我输入密码。
我使用 postgresql 命令'createuser myusername'。它总是提示我输入密码。如果我将密码留空,则会出现未指定密码的错误。
我只是想创建一个使用空白/无密码的用户,而我无法在 mac os x 下使用 Postgresql 9 来做到这一点。
我应该采取哪些步骤来创建没有密码的用户。该命令总是要求我输入密码。
解决这个问题是createuser
行不通的。根据man
页面createuser
,它说如果您确实需要密码并设置,登录将失败--no-password
。createuser
只是创建一个用户。它不决定用户必须如何进行身份验证。
身份验证主要在 中处理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
.pgpass
与其创建没有密码的用户,另一种方法是创建一个带有密码的.pgpass 文件以自动提供密码。所有使用 libpq 进行连接的应用程序都会尊重这一点,除了 JDBC 驱动程序和 .NET 驱动程序之外,几乎所有应用程序都会遵守这一点。
.pgpass
以下是如何使用正确的文件权限为用户“foobar”和密码“password”创建示例文件:
echo 'localhost:*:*:foobar:password' >> ~/.pgpass
chmod 600 ~/.pgpass
为 PG 用户更改用户密码的另一种方法(我更喜欢它)是登录到 postgres 控制台(作为postgres
本地 PC 上的用户),并发出 SQL 请求:
$ sudo -u postgres psql -w
# ALTER USER postgres WITH PASSWORD '';
postgres=# ALTER USER postgres WITH PASSWORD '';
NOTICE: empty string is not a valid password, clearing password
ALTER ROLE
postgres=#