我得到這個錯誤,而試圖轉儲數據庫,我進入PostgreSQL的轉儲權限被拒絕
linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied
什麼問題?我剛剛安裝了新鮮的postgresql。
我得到這個錯誤,而試圖轉儲數據庫,我進入PostgreSQL的轉儲權限被拒絕
linuxuser $ sudo su postgres
linuxuser $ [sudo] password for linuxuser:...
$ pg_dump -h localhost mydb >tempfile
$ sh: cannot create tempfile: Permission denied
什麼問題?我剛剛安裝了新鮮的postgresql。
寫入postgres用戶具有寫權限的目錄。例如/tmp
。
$ pg_dump -h localhost mydb >/tmp/tempfile
在您的嘗試中,postgres用戶嘗試在屬於其他用戶的某個隨機目錄中創建文件。
sudo su postgres不會更改當前目錄,因此您仍然在linuxuser的主目錄中,並且postgres沒有寫入權限。 切換到不同的目錄
postgres
用戶至於其他的正確答案說,該文件夾在其中您正試圖保存備份沒有分配給postgres
用戶(操作系統用戶帳戶)的權限。 postgres
用戶是運行備份實用程序的用戶。這個用戶帳號是在Postgres安裝過程中創建的。您可能使用了不同的名稱,但默認爲postgres
。
的解決方案是要麼找到或創建一個文件夾其中postgres
用戶讀寫權限。
在Mac OS X(山獅),我可以在Finder來創建這樣一個文件夾。
postgres_backups
的文件夾。File
>Get Info
。Sharing & Permissions
部分的顯示三角形。postgres
用戶。Privilege
列中,對於新的postgres
行,將彈出式菜單更改爲Read & Write
。Get Info
窗口。完成。現在您可以將您的Postgres備份文件指向該文件夾。
順便說一句,我使用pgAdmin的應用程序進行備份和恢復。控制並點擊所需的數據庫並選擇Backups…
。 pgAdmin應用程序可能與您的Postgres安裝捆綁在一起。
你必須要做的第一件事就是不要切換到用戶postgres。使用該命令進行備份:
% mkdir backup
% chmod 0777 backup
% su postgres
[enter password]
$ cd backup
$ pg_dump mydb >tempfile
$ exit
「臨時文件」將是:
pg_dump -U username -h localhost dbname > /db.sql
備份和恢復可以通過一個知道的Postgres通過在工作目錄更改權限的超級用戶口令的任何unpriviledged用戶完成擁有postgres和同組用戶
我試圖在Ubuntu機器上長時間備份我的PSQL數據庫,並嘗試用戶訪問權限,超級用戶狀態,文件夾屬性 - 這個「權限被拒絕」 -很多東西。最後,有些工作非常簡單。在命令:
pg_dump -U username -O dbname > 'filename.sql'
請確保您有引號(單或雙引號似乎工作)圍繞如下比(「>」)標誌的更大的文件名。上面的例子沒有引號圍繞文件名。一旦我嘗試過,我不再收到權限被拒絕的錯誤。