次のコマンドを使用してデータベースを復元しようとします。
$ sudo -u postgres pg_restore -C -d dvdrental dvdrental.tar
[sudo] password for t:
ただし、次のエラー メッセージが表示されます。
ディレクトリを次に変更することはできません。"/home/t/mydata/.../relational model/SQL/implementations/Implementations、つまりリレーショナルデータベース管理システム/postgreSQL/general/web/postgresqltutorial/databases":権限が拒否されました
pg_restore:[archiver]は入力ファイル 'dvdrental.tar'を開くことができません:そのファイルまたはディレクトリはありません
権限が拒否された現在のディレクトリにディレクトリを変更できないのはなぜですか?
ファイル権限ビットは次のとおりです。
-rw-rw-r-- 1 t t 2838016 May 26 2013 dvdrental.tar
親ディレクトリの1つを誰も読んで実行できないからですか?このファイルには親ディレクトリがたくさんあります。どうやって確認できますか?
ベストアンサー1
あなたはできますが、ユーザーはpostgres
できません。
sudo -u postgres
user-idをpostgresに変更してコマンドを実行します。これで、ユーザーpostgresは入力ファイルだけでなく現在のディレクトリにもアクセスできません。
代わりに、次の操作を行います。
$ sudo -u postgres pg_restore -C -d dvdrental < dvdrental.tar
これにより、sudoが開始される前にファイルがユーザーアカウントのシェルで開き、pg_restore
標準入力のファイル内容にアクセスされます。