web-dev-qa-db-ja.com

sudo mysqldump:許可が拒否されました

私は走ろうとしています

Sudo mysqldump

ユーザーアカウントで取得しますが、Permission deniedメッセージが表示されます

Sudo suに切り替えると機能します。

問題は、Sudoが許可を拒否する理由です。ユーザーアカウントに他の特権を与える必要がありますか?

3
Kapa

ダンプをユーザーのホームディレクトリに保存してください

例えばmysqldump -u {db_user} -p --databases {db_name} > /home/{user}/my.dump.sql

3
Dima Kurtash

実動サーバー上の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を使用しないでください。

クレジット

1
rɑːdʒɑ

記載されている宛先パスを必ずコマンドしてください。

例:Sudo mysql -u YourUsername -p DatabaseName > ~/Path/Where/you/Want/The/Dump/FiletoBe/Kept/dumpfile.sql

0
user591987

Sqlファイルをダンプするフォルダーの書き込み許可を追加します。

Sudo chmod 755 folder_url

そして実行:

mysqldump -u user -p db_name > db_dump.sql

0
William

mysqldumpには現在のユーザーのユーザー名が必要です。それ以外の場合は、デフォルトでrootになります。 aisi suを実行すると、ルートアクセスが自動的に提供されます。ユーザーの代わりにユーザー名でこれを試してください。 mysqldump -u user -pプロンプトが表示されたらパスワードを入力します。

0
collinx