私は走ろうとしています
Sudo mysqldump
ユーザーアカウントで取得しますが、Permission denied
メッセージが表示されます
Sudo su
に切り替えると機能します。
問題は、Sudo
が許可を拒否する理由です。ユーザーアカウントに他の特権を与える必要がありますか?
ダンプをユーザーのホームディレクトリに保存してください
例えばmysqldump -u {db_user} -p --databases {db_name} > /home/{user}/my.dump.sql
実動サーバー上のmysqldump
は、Sudoでは機能しません。これを試してください:
$ Sudo su
# mysqldump database> database.sql
mysqldump
には、mysqlユーザーrootのパスワードが必要です。そのパスワードを指定しないと、Sudo
が機能しないか、Sudoが機能しません。
mysqldump
は.my.cnf
ファイルを見てパスワードを取得でき、mysqldump
コマンドを実行しているユーザーから取得できます。そのため、Linuxのrootユーザーに.my.cnf
にパスワードが設定されている場合、はい、Sudoが役立ちます。ただし、mysql rootユーザーにパスワードがあり、どの.my.cnfにもパスワードが設定されていない場合、Sudoは役に立ちません。
Mysqlのrootユーザーとパスワードを自分のユーザーの.my.cnf
に追加すれば、Sudoも必要ありませんが、これはセキュリティ上のリスクです。
他の回答も指摘しているように、ルート(mysqlではなくLinux)が所有する場所に出力を書き込むためにSudoが必要になる場合があります。
最後に、スクリプトを実行しているユーザーを教えてはいけません。スクリプトがルートのcrontabにある場合は、パスワードを提供するために.my.cnf
が必要かもしれませんが、Sudoは必要ありません。
Mysql rootユーザーにパスワードが設定されていない場合、唯一の問題は出力の書き込みです。この場合、スクリプトをrootとして実行しない場合はSudoが必要です。
スクリプトをルートとして(たとえば、/etc/cron.daily
のスクリプトとして)実行する場合、上記のすべてに関係なく、スクリプト内でSudoを使用しないでください。
記載されている宛先パスを必ずコマンドしてください。
例:Sudo mysql -u YourUsername -p DatabaseName > ~/Path/Where/you/Want/The/Dump/FiletoBe/Kept/dumpfile.sql
Sqlファイルをダンプするフォルダーの書き込み許可を追加します。
Sudo chmod 755 folder_url
そして実行:
mysqldump -u user -p db_name > db_dump.sql
mysqldumpには現在のユーザーのユーザー名が必要です。それ以外の場合は、デフォルトでrootになります。 aisi suを実行すると、ルートアクセスが自動的に提供されます。ユーザーの代わりにユーザー名でこれを試してください。 mysqldump -u user -p
プロンプトが表示されたらパスワードを入力します。