Erreur MySQL 1290 : option privée de fichier sécurisé bloquant l'exportation de données
Lors de l'exécution d'une instruction MySQL impliquant l'exportation de données vers un fichier à l'aide de INTO OUTFILE clause, les utilisateurs peuvent rencontrer l'erreur « Code d'erreur : 1290. Le serveur MySQL s'exécute avec l'option --secure-file-priv et ne peut donc pas exécuter cette instruction. » Cela se produit lorsque le serveur est configuré avec des mesures de sécurité améliorées qui restreignent les opérations sur les fichiers.
Explication de l'option Secure File Private
Les limites de l'option --secure-file-priv accès aux fichiers et privilèges sur le serveur MySQL. Par défaut, cette option est activée et attribue un répertoire spécifique comme seul emplacement autorisé pour les opérations sur les fichiers. Toute tentative d'accès ou d'écriture dans des fichiers en dehors de ce répertoire désigné entraînera l'erreur 1290.
Solution simple : restreindre le chemin vers le répertoire autorisé
Pour résoudre cette erreur sans modifier paramètres du serveur, les utilisateurs peuvent spécifier explicitement le répertoire autorisé dans la clause INTO OUTFILE :
SELECT * FROM xxxx WHERE XXX INTO OUTFILE '<path/to/permitted/directory>/report.csv' FIELDS TERMINATED BY '#' ENCLOSED BY '"' LINES TERMINATED BY '\n'
Remplacer
Solutions alternatives :
Cela nécessite de modifier le fichier de configuration MySQL (généralement my.ini ou my.cnf). Commentez ou supprimez l'option secure_file_priv ou définissez-la sur une chaîne vide (``). Cependant, cela réduit la sécurité du serveur et ne doit être effectué que dans des environnements contrôlés.
Si vous avez besoin d'accéder aux fichiers au-delà du répertoire autorisé, vous pouvez accorder le privilège FILE à l'utilisateur exécutant. Cela peut être fait en utilisant l'instruction SQL suivante :
GRANT FILE ON *.* TO <username>@'<host>';
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!