web-dev-qa-db-fra.com

MySQL sur MACOS Sierra paramètre de fichier sécurisé-priv

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.

3
Peter Juselius

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:

  • MySQL Workbench
  • Navicat pour MySQL
  • JetBrain IDE (la plupart d'entre eux ont un module de base de données)
  • DBVisualizer

n'importe lequel d'entre eux peut vous aider:

  • exporter le résultat de la requête dans un format différent - csv, fichier délimité, json, xls
  • Importez le format populaire des fichiers directement dans le tableau, avec mappage des colonnes aux types de données

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.

4
a_vlad

Créez un nouveau fichier /etc/my.cnf et ajoutez les lignes suivantes

[mysqld_safe]
[mysqld]
secure_file_priv="/Users/abc/"

et redémarrez

1
KayV