2010-07-27 27 views
2

Je suis en cours d'exécution de ce code:Pourquoi est-ce que j'obtiens une erreur 'accès refusé pour utilisateur' en php?

include '../includes/connection.php'; 
$conn = dbConnect('backup'); 

$tableName = 'orders'; 
$backupFile = '../backup/db-backup(' . $date . ').sql'; 
$query  = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName"; 
$result = $conn->query($query) or die(mysqli_error($conn)); 

Je reçois cette erreur:

Access denied for user 'ideapale_amadmin'@'localhost' (using password: YES)

Je sais que le mot de passe et nom d'utilisateur est correct, et je l'ai testé la connexion à la base de données sans exécuter la requête et ça fonctionne bien. De plus, l'utilisateur que j'utilise actuellement a tous les privilèges. Par conséquent, je pense que quelque chose ne va pas avec ma déclaration SQL. Pourquoi est-ce que j'obtiens l'erreur «accès refusé pour l'utilisateur»?

+0

Il peut y avoir un petit bogue dans votre code de connexion. Pouvez-vous nous montrer le code de connexion avec le mot de passe/nom d'utilisateur expurgé? –

+1

pouvez-vous faire une déclaration select "normale"? Si oui, c'est un problème avec vos prévilèges (** NOTE: ** "FICHIER" -permissions sont définies globalement, ni pour une base de données spécifique - peut-être avez-vous oublié cela) – oezi

+0

Oui, je peux faire une déclaration select normale sur le même page. Comment définir des autorisations globales sur un serveur? Je pourrais probablement comprendre comment faire cela dans phpmyadmin sur wamp, mais je ne sais comment définir des privilèges pour un utilisateur connecté à une base de données. Où puis-je définir les privilèges globaux pour un utilisateur? – zeckdude

Répondre

3

Désolé de le dire, mais évidemment le mot de passe est pas correct. Soit cela ou vous avez des privilèges incorrects.

+0

J'ai déjà défini tous les privilèges. De quels autres privilèges ai-je besoin? – zeckdude

3

déjà dit dans mon commentaire, mais je pense que c'est la solution:

« Fichier » -permissions sont fixés globale, ni pour une base de données spécifique - je pense que vous avez oublié que, si l'utilisateur n'a pas autorisations pour ... INTO OUTFILE (et, aussi, non pas pour LOAD DATA INFILE...)

EDIT: la requête d'accorder ce privilège (hors de ma tête, non testé):

GRANT FILE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY 'mypasswd'; 

EDIT2: pour le configurer dans phpMyAdmin, il suffit de cliquer sur Server: localhost (qui devrait être la page de démarrage lorsque vous ouvrez phpMyAdmin) puis cliquez sur Privileges, sélectionnez votre utilisateur et ajoutez la coche ou FILE dans la section Données (donc, simplement ne le font pas défiler vers le bas et sélectionnez une base de données spécifique)

EDIT3: si vous utilisez la méthode 1, assurez-vous d'exécuter la déclaration de subvention en tant que root - un utilisateur ne peut pas accorder des privilèges pour lui-même (s'il pourrait, tout ce matériel de permission serait insensé)

+0

Comment définir des autorisations globales sur un serveur? Je pourrais probablement comprendre comment faire cela dans phpmyadmin sur wamp, mais je ne sais comment définir des privilèges pour un utilisateur connecté à une base de données. Où puis-je définir les privilèges globaux pour un utilisateur? – zeckdude

+0

@zeckdude: s'il vous plaît voir mon édition – oezi

+0

Je reçois l'erreur d'accès refusé lorsque j'essaie d'exécuter la déclaration SQL que vous m'avez donné. – zeckdude