Je ne trouve pas où mettre secure-file-priv
. Je reçois ce message:
1290 - Le serveur MySQL fonctionne avec l'option --secure-file-priv, il ne peut donc pas exécuter cette instruction
lors de l'exécution de cette instruction:
SELECT COLUMN_NAME, data_type FROM tabledefs INTO OUTFILE 'xpeter'
Si je supprime OUTFILE 'xpeter'
Ça marche. OUTFILE '/tmp/xpeter
ne fonctionne pas non plus.
J'ai essayé d'ajouter --secure-file-priv="/tmp"
, pas de changement. Les séjours variables sont NULS:
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="/tmp" $other_args >/dev/null &
/usr/local/mysql/bin/mysqld --verbose --help | grep secure-file
--secure-file-priv=name
secure-file-priv NULL
Il n'y a pas my.cnf
fichier. Je parcours tout le système de fichiers, à la recherche de *.cnf
fichier. Impossible de trouver autre chose que: ./mysql-5.7.17-macos10.12-x86_64/data/auto.cnf
et ./mysql-5.7.17-macos10.12-x86_64/support-files/my-default.cnf
. La ligne $bindir/mysqld...
est dans support-files/my-default.cnf
.
Je relance la requête sans OUTFILE 'xpeter'
, requête OK, aucun message dans les fichiers journaux sauf Apache2 log
. Puis je cours
SELECT COLUMN_NAME, data_type INTO OUTFILE 'xpeter' FROM tabledefs
aucune erreur dans les fichiers journaux, uniquement dans phpmyadmin (d'où je lance l'instruction de requête, connecté en tant que root): même message que précédemment.
J'ai essayé le etc/my.cnf
et aussi:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ProgramArguments</key>
<array>
<string>--secure-file-priv=/mysql_exp</string>
</array>
<key>WorkingDirectory</key> <string>/usr/local/mysql</string>
</dict>
</plist>
Dans les deux cas, après le redémarrage, je n'étais toujours pas autorisé à écrire un fichier.
Je n'ai pas changé le propriétaire du dossier. Si j'ajoute --secure-file-priv=/mysql_exp
à Daemons et redémarrez MySQL ne fonctionne pas du tout.
sur mac os x paramètres de démarrage de mysql Vous pouvez changer en éditant le fichier .plist
emplacement:
/Library/LaunchDaemons
com.Oracle.oss.mysql.mysqld.plist
Utilisez Xcode ou par exemple BBEdit, et ajoutez une ligne dans la section ProgramArguments
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>ExitTimeOut</key>
<integer>600</integer>
<key>GroupName</key>
<string>_mysql</string>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>com.Oracle.oss.mysql.mysqld</string>
<key>LaunchOnlyOnce</key>
<false/>
<key>ProcessType</key>
<string>Interactive</string>
<key>Program</key>
<string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
<string>--secure-file-priv=/mysql_exp</string>
</array>
<key>RunAtLoad</key>
<false/>
<key>SessionCreate</key>
<true/>
<key>UserName</key>
<string>_mysql</string>
<key>WorkingDirectory</key>
<string>/usr/local/mysql</string>
</dict>
</plist>
redémarrez MySQL et vérifiez:
mysql> show variables like 'secure%';
+------------------+-------------+
| Variable_name | Value |
+------------------+-------------+
| secure_auth | ON |
| secure_file_priv | /mysql_exp/ |
+------------------+-------------+
2 rows in set (0.00 sec)
Ajouter:
Vous pouvez obtenir le même résultat si vous créez le fichier my.cnf directement dans/etc /
Sudo nano /etc/my.cnf
Vous pouvez copier un exemple de fichier depuis
/usr/local/mysql/support-files/
juste des notes sur les commentaires - "copier/coller" ce n'est pas un moyen, même sur votre Mac Vous n'avez vraiment pas besoin d'importer/exporter de fichiers, utilisez simplement des outils normaux comme:
n'importe lequel d'entre eux peut vous aider:
l'importation/exportation manuelle au niveau des fichiers pourrait être utile dans un environnement de production où vous avez besoin d'automatiser les processus, mais pour le moment, c'est plus une méthode de sauvegarde, principale et appropriée - des scripts et des outils ETL.
Créez un nouveau fichier /etc/my.cnf et ajoutez les lignes suivantes
[mysqld_safe]
[mysqld]
secure_file_priv="/Users/abc/"
et redémarrez