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?
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
mysqldump
sur un serveur de production ne fonctionne pas avec Sudo. S'il vous plaît essayez ceci:
$ Sudo su
# mysqldump database> database.sql
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.
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
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
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é.