web-dev-qa-db-fra.com

sudo mysqldump: permission refusée

J'essaye de courir

Sudo mysqldump

avec un compte utilisateur mais je reçois le message: Permission denied

Si je passe à Sudo su alors cela fonctionne.

La question est de savoir pourquoi Sudo donne la permission refusée? dois-je donner d'autres privilèges sur mon compte d'utilisateur?

3
Kapa

Essayez de sauvegarder le dump dans le répertoire personnel de l'utilisateur

par exemple. mysqldump -u {db_user} -p --databases {db_name} > /home/{user}/my.dump.sql

3
Dima Kurtash

mysqldump sur un serveur de production ne fonctionne pas avec Sudo. S'il vous plaît essayez ceci:

$ Sudo su
# mysqldump database> database.sql
2
Bryan Zavala Valvidia

mysqldump aura besoin d'un mot de passe pour l'utilisateur root mysql. Si vous ne fournissez pas ce mot de passe, il ne fonctionnera pas, Sudo ou pas de Sudo.

mysqldump peut consulter votre fichier .my.cnf pour obtenir le mot de passe. Il l'aura ensuite de l'utilisateur qui exécute la commande mysqldump. Donc, si l'utilisateur root Linux a un .my.cnf configuré avec un mot de passe, oui, Sudo vous aidera. Cependant, si l'utilisateur root mysql a un mot de passe et qu'il n'est configuré dans aucun fichier .my.cnf, alors Sudo ne vous aidera pas.

Vous pouvez ajouter l'utilisateur root mysql et le mot de passe à .my.cnf de votre propre utilisateur. Vous n'aurez donc pas besoin de Sudo non plus, mais cela constitue un risque pour la sécurité.

Comme le soulignent les autres réponses, vous aurez peut-être besoin de Sudo pour écrire la sortie quelque part que possède la racine (Linux, pas mysql).

Enfin, vous ne nous dites pas quel utilisateur exécute le script, s'il est dans la crontab de root (par exemple), alors Sudo ne sera pas nécessaire, bien que vous ayez peut-être encore besoin d'un .my.cnf pour fournir le mot de passe.

Si votre utilisateur root mysql n'a pas de mot de passe défini, le seul problème est l'écriture de la sortie. Dans ce cas, Sudo est requis si vous n'exécutez pas le script en tant que root.

Si vous exécutez le script en tant que root (par exemple, en tant que script dans /etc/cron.daily), vous ne devez pas utiliser Sudo dans le script, indépendamment de ce qui précède.

crédit

1
rɑːdʒɑ

Assurez-vous de commander le chemin de destination mentionné.

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

0
user591987

Ajoutez les autorisations en écriture du dossier dans lequel vous souhaitez vider le fichier SQL:

Sudo chmod 755 folder_url

et courir:

mysqldump -u user -p db_name > db_dump.sql

0
William

mysqldump requiert le nom d'utilisateur de l'utilisateur actuel, sinon il prendra racine par défaut. Lorsque vous faites aisi su, vous fournissez automatiquement un accès root. Essayez ceci avec votre nom d'utilisateur à la place de l'utilisateur. mysqldump -u user -p Entrez le mot de passe lorsque vous y êtes invité.

0
collinx