2015-07-13 41 views
0

我想用PostgreSQL 9.4創建一個數據庫。我在命令提示符下鍵入「psql」,然後它要求輸入密碼。我提供了在安裝過程中設置的密碼,但它表示驗證失敗。在線檢查後,我得出結論:我需要使用名爲「postgres」的超級用戶,它是系統用戶,其密碼是我在安裝過程中設置的密碼。Windows:如何將我的PostgreSQL用戶設置爲超級用戶?

我現在正試圖將PostgreSQL設置爲這個超級用戶。我花了很多時間瀏覽互聯網尋找解決方案,但無法解決問題。我試過postgres ALTER USER myuser WITH SUPERUSER(我在Windows命令提示符中寫到),但它說「alter」不被識別。現在,當我嘗試使用PostgreSQL時,我的主要問題是我得到錯誤:「MYUSERNAME角色不存在」。(這是在我編輯了pg_hba.conf以使它不要求輸入密碼之後)

+0

您是否用'CREATE USER/ROLE'創建了_myusername_用戶? –

+0

@ColonelThirtyTwo不,我沒有。根據我的理解,我從未創建MYUSERNAME用戶;這就是爲什麼它告訴我這個角色不存在。我在安裝過程中創建了一個postgres超級用戶。 –

回答

0

默認情況下,psql使用操作系統的名稱登錄到同名數據庫。如果你想以用戶身份登錄postgres你應該做的:

psql -u postgres <any other options> 

如果密碼要求,你給postgres用戶的密碼。您現在已連接到postgres數據庫,在那裏您確實不應該做任何事情,除了創建新用戶(對安裝而言是全局的)和其他數據庫。

一旦在控制檯中,您可以創建新的用戶,如:

CREATE ROLE myusername LOGIN PASSWORD secret; 

和新的數據庫,如:

CREATE DATABASE myowndb; 
ALTER DATABASE myowndb OWNER TO myusername; 

然後你從控制檯註銷與\q

爲了能夠使用新的數據庫訪問的PostgreSQL,你必須編輯pg_hba.conf文件(樣本,修改以符合你的網絡設置):

host myowndb myusername 192.168.0.0/16 md5 

現在你從重新啓動PostgreSQL服務器Services標籤的Control Panel

然後你就可以登錄到您的新數據庫:

psql -u myusername -d myowndb 

或使用其他客戶端,例如pgAdminIII

+0

@hashemelezabi:如果你不想每次都指定'-u postgres'(或'-u myusername'),你可以設置環境變量'PGUSER',它「覆蓋」當前用戶名:http:// www .postgresql.org/docs/current/static/libpq-envars.html –

+0

謝謝帕特里克。你的方法有效,我能夠創建一個數據庫。但是,由於我需要每次將其設置爲用戶「postgres」,所以我無法在命令提示符下執行其他命令,因爲如果我使用'\ q'退出控制檯,用戶似乎會被重新設置爲MYUSER。因此,我想設置PGUSER變量,@a_horse_with_no_name。但我無法。什麼是使我設置這個變量的語法? –

+0

@HashemElezabi:https://www.google.com/?gws_rd = ssl#q =如何%20to%20set%20an%20environment%20variable%20in%20windows –

相關問題