Errcode 13 , SELECT INTO OUTFILE problème
J'essaie de comprendre la raison pourquoi je continue à rencontrer des problèmes lors de l'utilisation INTO OUTFILE commande.
Je reçois toujours ce erroro:
ERROR 1 (HY000): Can't create/write to file '/var/www/p1.txt' (Errcode: 13)
SELECT password FROM mysql.user WHERE user='root' INTO OUTFILE '/var/www/p1.txt';
Détails utiles:
-
application web : DVWA (localhost) (à des fins d'étude)
-
Server: Apache/2.2.14 (Ubuntu) - PHP/5.3.2
-
Version de MySQL 5.1.63
-
Système d'exploitation Linux Backtrack 5r3.
Je suis l'exécution de la commande en tant que root. Aussi, je peux librement créer des dossiers ou des fichiers dans /var/www/
Errcode 13 je sais qu'il signifie le refus d'une autorisation, mais que dois-je faire pour corriger le problème?
Toute aide sera très appréciée.
- Ne
p1.txt
existent déjà (il ne devrait pas)? L'utilisateur sous lequel lemysqld
processus ont la permission d'écrire à la/var/www
répertoire?
Vous devez vous connecter pour publier un commentaire.
chown /var/www pour l'utilisateur qui tente d'écrire le fichier, ou chmod 777 /var/www
ce n'est probablement pas un moyen sûr de le faire, vous pourriez envisager de placer le fichier ailleurs
Même si vous êtes connecté en tant que root sur MySQL, le fichier en écriture sera effectué tant que l'utilisateur qui exécute le réel démon MySQL.
En d'autres termes, vous devez vérifier que l'utilisateur exécute mysqld, et de donner l'autorisation d'écriture pour le répertoire de l'utilisateur.
mysql -uroot -p
) comme à l'utilisateur qui exécutemysql
. Ceci est incorrect, dans lemy.cnf
ou partout où la configuration de serveurs est contrôlé il y a un utilisateur qui est configuré pour s'exécuter. Article utile dev.mysql.com/doc/refman/8.0/en/changing-mysql-user.htmlgrep 'user=' /etc/my.cnf
en Supposantmysql
est votre utilisateur la réponse estchown mysql:mysql path_you_want_to_write_to
vous devez modifier les autorisations pour l'utilisateur
mysqld
. démarrer en exécutant la commande suivantesudo aa-status
pour vérifier votre statut d'utilisateur autorisé et répertoires. si vous souhaitez modifier les autorisations, modifier/etc/apparmor.d/usr.sbin.mysqld
et insérer les répertoires que vous voulez.vous devez ensuite redémarrer apparmor
sudo /etc/init.d/apparmor restart
mysqldump -T
par exemple,service apparmor teardown
va l'éteindre. Lorsque vous avez terminé, vous pouvezservice apparmor start
et restaurer la vie retour à la normale.Bien que ce post est assez ancien, en 2018, ce problème est toujours là. J'ai passé quelques heures à se taper la tête dans ce labyrinthe.
Version du serveur: 5.7.24 MySQL Community Server (GPL) en cours d'exécution sur Ubuntu 14.04
Pour permettre à MySql SELECT INTO OUTFILE nécessite de définir de MySQL
secure-file-priv
option dans votre configuration.Ajouter les 2 lignes de
/etc/mysql/mysql.conf
:/usr/share/mysql-files
est le répertoire où sont mes fichiers seront stockés. J'ai créé ce faire:Changement
/usr/share/mysql-files
pour tout ce que vous préférez, mais éviter d'utiliser le/tmp
répertoire!Pourquoi?
Parce que, à la prochaine fois, vous serez le redémarrage, la
/tmp
répertoire est heureusement effacé, y compris votre précieux mysql-les fichiers du sous-répertoire. Le service mysql puis étouffe et il ne veut pas démarrer, conduisant à bizarre erreurs avec cryptics messages.redémarrer mysql et vérifiez:
Vous pas fait, encore!
Il y a un troll du nom de
apparmor
qui va ruines de votre projet.Modifier le fichier
/etc/apparmor/local/usr/sbin/mysqld
et ajouter leaprès 2 lignes-ne pas oublier la fin des virgules:
l'enregistrer, et d'analyse:
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
Qui devrait en faire.
Sur centos l'selinux chose est de jouer pas-nice.
Maintenant, c'est brut, mais il a travaillé pour moi (jusqu'au redémarrage du système, puis il bascule en arrière sur).
Si cette mesure temporaire de travaux, vous avez besoin de google pour savoir comment configurer selinux correctement.