我使用postgresql命令 'createuser myusername'。它总是提示我输入密码。如果我不输入密码,它会报错说未指定密码。
我只想创建一个没有密码的用户,但在mac os x下的Postgresql 9中无法实现。
我应该采取哪些步骤来创建一个没有密码的用户。该命令总是要求我输入密码。
我使用postgresql命令 'createuser myusername'。它总是提示我输入密码。如果我不输入密码,它会报错说未指定密码。
我只想创建一个没有密码的用户,但在mac os x下的Postgresql 9中无法实现。
我应该采取哪些步骤来创建一个没有密码的用户。该命令总是要求我输入密码。
使用createuser
无法解决这个问题。根据createuser
的man
页面,如果设置了--no-password
,则登录将失败,如果您确实需要密码,则无法使用该选项。 createuser
仅仅创建一个用户,它并不决定用户如何进行身份验证。
身份验证主要在pg_hba.conf
中处理,该文件决定是否需要在登录时输入密码。我从未在OS X上运行过PostgreSQL,在Linux上,我的发行版的默认配置如下:
# 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 socket 进行连接。如果你尝试使用 psql --host localhost
进行连接,则会使用第二行。
.pgpass
与创建没有密码的用户不同,另一种选择是创建一个.pgpass文件,在其中添加密码以自动提供密码。所有使用libpq进行连接的应用程序都会尊重此文件,实际上除了JDBC驱动程序和.NET驱动程序之外,几乎所有的应用程序都使用它。
以下是如何为用户“foobar”和密码“password”创建示例.pgpass
文件,并设置正确的文件权限:
echo 'localhost:*:*:foobar:password' >> ~/.pgpass
chmod 600 ~/.pgpass
为PG用户更改密码的另一种方法(我更喜欢这种方法)是登录到Postgres控制台(作为本地PC上的postgres
用户),并发出SQL请求:
另一种更改PG用户密码的方式(我更喜欢这种方式)是登录到Postgres控制台(使用本地PC上的postgres
用户),并执行以下SQL请求:
$ sudo -u postgres psql -w
# ALTER USER postgres WITH PASSWORD '';
postgres
系统用户设置密码。当我在 psql 中更新密码时,它没有抱怨无法更新密码,但是当我尝试使用该密码登录时,它会给我上面的错误。但有趣的是,其他用户也无法使用该密码登录。也许我需要配置 psql 以接受没有密码的用户? - RomulusError: psql: fe_sendauth: no password supplied
。 - Romuluspostgres=# ALTER USER postgres WITH PASSWORD '';
NOTICE: empty string is not a valid password, clearing password
ALTER ROLE
postgres=#
/etc/postgresql/9.0/main/pg_hba.conf
(适用于PostgreSQL 9.0)中找到它。 - jmonteiro/var/lib/pgsql/9.3/data/pg_hba.conf
。 - XåpplI'-I0llwlg'I -/Library/PostgreSQL/9.4/data/pg_hba.conf
。请注意,在将方法从md5更改为ident后,我必须重新启动数据库:sudo -u postgres pg_ctl -D /Library/PostgreSQL/9.4/data restart
。 - hert