2012-05-03 22 views
19

我正在關注最近的RailsCast設置PostgreSQL,但我無法運行initdb /usr/local/var/postgres命令。每次我運行它,我得到這個錯誤:試圖在我的環境中獲得Postgres設置,但似乎無法獲得intidb的權限

The files belonging to this database system will be owned by user "Construct". 
This user must also own the server process. 

The database cluster will be initialized with locale en_US.UTF-8. 
The default database encoding has accordingly been set to UTF8. 
The default text search configuration will be set to "english". 

creating directory /usr/local/var/postgres ... initdb: could not create directory "/usr/local/var": Permission denied 
+0

您已經解決您的問題? – swasheck

+1

我有同樣的問題...還沒有找到解決方案。 – fccoelho

回答

45

這應該只是罰款:

# sudo mkdir /usr/local/var/postgres 
# sudo chmod 775 /usr/local/var/postgres 
# sudo chown construct /usr/local/var/postgres 
# initdb /usr/local/var/postgres 

使用您的用戶名來代替構建。所以,如果您的計算機的用戶名是WDurant,代碼爲:

# sudo chown wdurant /usr/local/var/postgres 
+3

'sudo chown $(whoami)/ usr/local/var/postgres /' – jhrr

+1

抱歉聽​​說你一直有這樣的問題@Geuis。我應該添加一些上下文來表明我只是試圖說明'sudo chown $(whoami)/ usr/local/var/postgres /'只是一種用'$(whoami)'編程方式確定用戶名的方法必須在'sudo chown wdurant/usr/local/var/postgres'中輸入。無論如何,希望你能解決所有問題。祝你好運。 – jhrr

+1

謝謝@jhrr。對不起昨晚的醜評。沒有真正針對你個人。試圖獲得此設置的結果令我非常沮喪。我刪除了之前的評論,但是我將在此爲其他任何未來需要此部分的人留下評論。 「問題不僅在於擁有者,而在於它對目錄的權限,沒有其他答案指出需要調整目錄權限,目錄」 – Geuis

3

你在哪個用戶運行initdb?如果您不是root用戶,則可能無權在/ usr/local中創建目錄。我建議創建的/ usr /本地的/ var/Postgres的爲根,並chown'ing它構造:

# mkdir -m 0700 -p /usr/local/var/postgres 
# chown construct /usr/local/var/postgres 

然後你initdb的(如運行結構)應具有的權限。另外,請注意,Unix用戶名通常是全小寫的(但也是區分大小寫的)。你是肯定你的Construct用戶實際上是大寫的?如果是這樣,你是否真的確定你希望它被大寫 - 很多東西都會被打破。

(FYI:對於Unix類似這樣的問題,你可能會發現Unix.SEAsk Ubuntu提供更快的答案)

5

你真的需要SUpostgres用戶

  • sudo su - postgres

然後你可以運行命令

  • initdb -E UTF8(我更喜歡現在這種設置由於UTF8是相當靈活,這將創造所有集羣爲UTF8 [除非你明確地另行指定])

,那麼你需要創建用戶(如果它不已創建)

  • $ createuser -s -U postgres
  • $ Enter name of role to add: {{ my login name }}(這似乎是Construct

即可退出postgres用戶的出來,你可以創建自己的數據庫

  • $ createdb
2

如果您在Arch Linux的運行,這樣使用:

sudo mkdir /var/lib/postgres 
    sudo chmod 775 /var/lib/postgres 
    sudo chown postgres /var/lib/postgres 

    sudo -i -u postgres 

    [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data' 
    [postgres]$ exit 

    sudo systemctl start postgresql.service 

    sudo -i -u postgres 
+0

太棒了 - 用於創建自定義數據目錄! :-D –

相關問題