2011-03-24 287 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