2012-12-03 166 views
0

這是我的問題:PostgreSQL的權限被拒絕i命令

[email protected]:~$ sudo su postgres -c "psql template1" 
Password: 
psql (9.1.6) 
Type "help" for help. 

template1=# \i /create.sql 
/create.sql: Permission denied 

我有這個問題,即使該文件是在桌面上。 當我複製create.sql的文本,並將其粘貼在那裏它的作品。

使用Ubuntu 12.10和PostgreSQL 9.1

謝謝你的幫助。

回答

3

問題是,您已經以用戶postgres的身份啓動了psql,並且您還沒有授予postgres用戶讀取SQL文件的權限。您需要授予權限。最簡單的方法是給予世界的讀取權限:

chmod a+r create.sql 

你可以通過改變你umask改變分配給文件的缺省權限;搜索更多信息。有些程序寧願忽略umask並設置限制文件權限,因此您總是需要知道如何授予權限。見man chmodman chown

順便說一句,您正在使用非常複雜的方法啓動psql作爲postgres用戶。這會做得很好:

sudo -u postgres psql template1 

注意/create.sql指定文件系統(/)的根命名create.sql文件。我懷疑這是你的意圖。

你可能想將其指定爲相對路徑(不帶前導/),如果它在你的主目錄,如:

template1=# \i create.sql 

,或者如果它在桌面上,你已經在開始psql您主目錄:

template1=# \i Desktop/create.sql 
+0

不,它在那裏。我不是相對的。我把它放在根目錄中以使路徑更短。但當文件在我的桌面上時,我遇到了同樣的問題。 –

+0

這不是關於路徑,因爲當路徑錯誤時,符號是:「沒有這樣的文件或目錄」 –

+0

@ Euler'sformula OK ...以及文件權限是什麼? 'ls -l create.sql'? –