2012-01-12 8 views

答えて

42

postgresユーザーが書き込みアクセス権を持つディレクトリに書き込みます。例えば、/tmp

$ pg_dump -h localhost mydb >/tmp/tempfile 

あなたの試みでは、postgresユーザーは、他のユーザーに属するランダムなディレクトリにファイルを作成しようとします。

5

sudo su postgresは現在のディレクトリを変更しないので、linuxuserのホームディレクトリにあり、postgresに書き込み権限がありません。別のディレクトリに 変更

2

postgresユーザー

他の正解は、バックアップ保存しようとされているフォルダがpostgresユーザー(オペレーティング・システム・ユーザー・アカウント)に割り当てられた権限を持っていない、言ったように。 postgresユーザーは、バックアップユーティリティを実行しているユーザーです。このユーザーアカウントは、PostgreSQLのインストールプロセス中に作成されました。別の名前を使用している可能性がありますが、デフォルトはpostgresです。権限

フォルダソリューションはpostgresユーザーが読み書き権限を持つフォルダを見つけるか、または作成するいずれかにあります。

のMac OS X

のMac OS X(マウンテンライオン)で、私は、Finderで、このようなフォルダを作成することができています。

  1. Finderで、新しいフォルダを作成します。選択してください。
    この例では、postgres_backupsという名前のフォルダを作成しました。
  2. File>Get Infoを選択してください。
  3. Sharing & Permissionsセクションの開閉用の三角形を開きます。
  4. Plusボタンをクリックして、別の項目をユーザーのリストに追加します。
    ユーザのリストが「シート」ダイアログに表示されます。
  5. リストからpostgresユーザーを選択します。
  6. Privilege列では、新しいpostgres行のポップアップメニューをRead & Writeに変更します。
  7. Get Infoウィンドウを閉じます。完了しました。

これでPostgresのバックアップファイルをそのフォルダに転送できます。ところで

screen shot of a "Get Info" window in the Finder

、私がバックアップおよびリストアを行うにはpgAdminでアプリを使用しています。必要なデータベースをControl +クリックし、Backups…を選択します。おそらくpgAdminアプリはあなたのPostgresインストールにバンドルされていました。

0

まず、ユーザーのpostgresに切り替えないでください。バックアップのためにこのコマンドを使用:

pg_dump -U username -h localhost dbname > /db.sql 
2

バックアップと復元は、作業ディレクトリのパーミッションを変更することにより、Postgresのスーパーユーザーのパスワードを知っているすべての特権を持たないユーザーが行うことができます。

% mkdir backup 

% chmod 0777 backup 

% su postgres 

[enter password] 

$ cd backup 

$ pg_dump mydb >tempfile 

$ exit 

は「一時ファイル」になりますポストグルの所有者であり、ユーザーと同じグループ

0

私のPSQLデータベースをUbuntuマシンに長期間バックアップしようとしているときにこの「アクセス権が拒否されました」という問題に取り組んでいました。ユーザーアクセス権、 -たくさんのもの。最後に、何かがうまくいけば簡単でした。コマンドで:

pg_dump -U username -O dbname > 'filename.sql' 

は、あなたが引用符(「>」)記号より大きく以下のファイル名を中心に(単一引用符または二重引用符が動作するように見える)があることを確認してください。上記の例では、ファイル名の前後に引用符はありません。私がそれを試みた後、私はもはやPermission Deniedエラーを受け取りませんでした。

関連する問題