2011-03-24 64 views
47

我使用postgresql命令'createuser myusername'。它总是提示我输入密码。如果我将密码留空,它会提示没有指定密码的错误。为PostgreSQL用户设置空白密码

我只是想创建一个空白/无密码的用户,我无法在Mac OS X下使用Postgresql 9。

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

回答

52

你正在吠叫错误的树,试图用createuser来解决这个问题。如果您想检查man页面的createuser,它会告诉您,如果您确实需要密码并设置 - 无密码,登录将会失败。 createuser实际上只是创建一个用户。它确实而不是决定用户将不得不认证。

身份验证主要在pg_hba.conf中处理,它决定是否在登录时要求输入密码。我从来没有在OS X上运行在Linux上的PostgreSQL,我发行的股票的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 

我会确保您有类似的发展进入了第一道防线。注意:如果没有设置--host选项,psql将尝试使用unix套接字进行连接。如果你试图用psql --host localhost

+1

其中是在mac os x或linux机器上的文件pg_hba.conf的位置? – othman 2011-03-25 14:05:44

+2

对于Ubuntu,您可以在'/ etc/postgresql/9.0/main/pg_hba.conf'找到它(适用于PostgreSQL 9.0)。 – jmonteiro 2012-01-13 23:30:45

+4

对于OS X 10.6.8,您可以在'/ Library/PostgreSQL/8.3/data/pg_hba.conf'找到它。请注意,它由'postgres'用户拥有,因此您需要'su postgres'来编辑它。 – Chris 2012-01-17 06:51:16

28

而不是创建一个没有密码的用户,请创建一个密码为.pgpass file的自动提供的密码。所有使用libpq进行连接的应用程序都会遵守这个要求,除了JDBC驱动程序和.NET驱动程序外,几乎所有这些应用程序都可以进行连接。

+1

+1 pgpass就是这样做的方法。 – 2011-03-24 19:33:05

5

连接的另一种方式(我prefere它)来改变用户对PG用户密码登录到Postgres的控制台(作为postgres用户在本地PC)第二行会被使用,发出SQL请求:

$ sudo -u postgres psql -w 

# ALTER USER postgres WITH PASSWORD ''; 
+0

请注意,如果服务器要求密码! – 0atman 2016-09-01 12:53:52

+1

不适合我。错误:psql:fe_sendauth:没有提供密码 – Romulus 2016-11-17 10:07:00

+0

@Romulus是否为系统用户'postgres'提前设置了密码?你也必须用'-w'尝试''psql -w' – 2016-11-17 12:42:01