2014-03-31 167 views
1

在GCE上安裝PostgreSQL需要root密碼才能運行sudo -u postgresql。這提示輸入一個密碼,我從來沒有給過這個密碼。
如何獲得此通行證或以其他方式從shell運行postgresql命令的任何方式?如何從GCE shell運行postgresql命令?

回答

0

您的系統用戶PostgreSQL沒有密碼(我聲明,沒有證據......但我想你會發現這是真的。)

通常你應該使用命令這樣的:

# Test that YOU can use psql (as postgres) to run a query: 
psql -U postgres -c 'select * from pg_catalog.pg_user;' 

# Test an interactive session: 
psql -U postgres my_database 
my_database=# select 42 as the_answer; 

# Create a new database 
psql -U postgres my_database 
my_database=# create database mydb; 


或者,它可能可以登錄像這樣(it usually is):

sudo su postgres 

而且你很可能用它來運行CREATEDB。但是像你自己一樣運行psql可能會更好。

+0

唯一能找到ATM的解決方案就是最後一個:'' sudo su postgres'。從那裏psql命令工作得很好。 – Tal

+0

這是一個很好的解決方案。使用psql作爲不同用戶的障礙是什麼? (或者錯誤是什麼?) – mdahlman

0

如果你想運行對你的PostgreSQL服務器的命令,你應該不需要使用sudo,只需使用該語法進入PostgreSQL交互外殼:

psql -U username database_name 

OR

psql -U username hostname database_name 

更換用戶名用你的postgresql用戶名,主機名(如果不在同一臺服務器上運行)用服務器主機名和database_n ame與您的數據庫的名稱。例如:

​​
+0

謝謝,但這不適用於'createdb'命令,或'createuser'命令,這正是我想要運行的。 我運行'psql -U postgres createdb mydb'並得到'對於用戶的對等認證失敗'postgres「' – Tal

+0

createdb -U postgres,假設你的用戶名是postgres。您需要有能力創建數據庫才能使用該角色的有效角色。你有用戶嗎? – Doon

+0

將postgres用戶添加爲數據庫安裝的一部分。以下是安裝日誌中的一行: '將用戶postgres添加到組ssl-cert'中。我必須承認,在發佈apt-get之後我沒有設置其他任何東西,但我確信linux用戶'postgres'存在,並且默認的db用戶'postgres'也是自動創建的。現在的問題是 - 如果沒有能力運行'su - postgres',怎麼能發出createuser命令? – Tal

0

通常情況下,sudo需要您的用戶帳戶密碼。因此,假定您正在運行命令的帳戶在sudoers文件中列出,它提示您輸入的密碼應該是您自己的。你有沒有嘗試過,而不是你看起來沒有(或甚至可能沒有設置)的root或postgresql密碼。

+0

正確,我的帳戶列在'sudoers'文件中,但我的登錄帳戶和登錄帳戶都沒有登錄密碼。 Google會使用根證書而不是用戶名/密碼將您登錄到GCE框中。所以我不能使用 – Tal

+1

是你的帳戶的實例創建者?因爲GCE說實例創建者應該有無密碼的sudo,你可以試試'sudo -s'來獲得root shell,或sudo su postgres – Doon

+0

correct.'sudo postgres'作品 – Tal