web-dev-qa-db-fra.com

Erreur MySQL: # 1142 - Commande SELECT refusée à l'utilisateur

J'ai des problèmes avec une requête donnée sur l'un de mes serveurs. Sur tous les autres endroits où j'ai testé, cela fonctionne parfaitement, mais sur le serveur, je veux l'utiliser, cela ne fonctionne pas.

Il s'agit du SQL suivant:

SELECT facturen.id            AS fid, 
       projecten.id           AS pid, 
       titel, 
       facturen.totaal_bedrag AS totaal, 
       betaald, 
       datum 
FROM   facturen, 
       projecten 
WHERE  facturen.project_id = projecten.id 
       AND projecten.eigenaar = '1' 
ORDER  BY datum DESC 

C'est le code d'erreur que j'en tire:

SELECT command denied to user 'marco'@'localhost' for table 'projecten'

Les tables: facturen:

CREATE TABLE IF NOT EXISTS `facturen` (
  `id` int(11) NOT NULL auto_increment,
  `project_id` int(11) NOT NULL,
  `datum` int(11) NOT NULL,
  `lever_datum` int(11) NOT NULL,
  `totaal_bedrag` decimal(9,2) NOT NULL,
  `btw` decimal(9,2) NOT NULL,
  `bedrijf` varchar(40) NOT NULL,
  `contactpersoon` varchar(60) NOT NULL,
  `adres` varchar(60) NOT NULL,
  `postcode` varchar(7) NOT NULL,
  `plaats` varchar(30) NOT NULL,
  `betaald` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=201200006 ;

projets:

CREATE TABLE IF NOT EXISTS `projecten` (
  `id` int(11) NOT NULL auto_increment,
  `titel` varchar(80) NOT NULL,
  `eigenaar` int(11) NOT NULL,
  `creatie_datum` int(11) NOT NULL,
  `eind_datum` int(11) NOT NULL,
  `totaal_bedrag` decimal(9,2) NOT NULL,
  `btw` decimal(9,2) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=201200004 ;

Ce qui est étrange, c’est que chaque requête sur la table 'projecten' et la table 'facturen' fonctionne parfaitement, mais elle fonctionne également sur deux autres serveurs.

26
Seph

Vous devez accorder des autorisations SELECT à l'utilisateur MySQL qui se connecte à MySQL.

même question que ici Erreur: La commande de sélection a été refusée à l'utilisateur '<ID utilisateur>' @ '' <adresse IP> 'de la table' <nom de la table> '

voir les réponses du lien;)

16
khaled_webdev

J'ai été confronté à la même situation, mais il est amusant de noter que la raison de l'erreur est due à l'utilisation d'une base de données ou d'un nom de schéma incorrects.

Il est vrai que plusieurs problèmes peuvent entraîner les erreurs que vous avez mentionnées.

22
Vaibs

Cette erreur survient également lorsqu'une erreur de syntaxe est survenue en raison de l'alias nomtable.

Par exemple, lorsqu'il est exécuté sous la requête,

sélectionnez * de a.table1, b.table2 où a.table1 = b.table2

erreur ci-dessous se produit:

Erreur MySQL: # 1142. Réponse de la base de données. Commande SELECT refusée à l'utilisateur "username @ ip" pour la table "table1"

Solution: La syntaxe avec alias nom_table doit être utilisée correctement, solution syntaxe pour l'instance ci-dessus> select * from table1 a, table2 b où a.table1 = b.table2

7
veena v.k.

J'ai eu ce problème aussi et pour moi, le problème était que j'ai changé de serveur et que la base de données à laquelle je tentais de me connecter avec mon PHP changé de "my_Database" en "my_database" .

5
John Lamberis

C'est le problème de privilèges dans les utilisateurs de votre base de données. d'abord vérifier et accorder l'autorisation à l'utilisateur 'macro' dans localhost

3
Dhileepan

Donc, le problème que j'ai rencontré était celui-ci ... l'application que j'avais utilisée pour accorder les autorisations convertissait le Schema.TableName en une seule instruction de base de données dans la mauvaise table; FOR UserName si vous n’êtes pas très attentif à GRANT SELECT vs GRANT TABLE SELECT. Corriger manuellement Grant Select sur la table en échappant correctement Schema.Table a résolu mon problème.

Peut-être pas lié, mais je peux imaginer si un client fait cela mal, un autre pourrait aussi.

J'espère que c'est utile.

1
CodeJohnny

Cette erreur s'est produite sur mon serveur lorsque j'ai importé une vue avec un définisseur non valide.

La suppression de la vue défectueuse a corrigé l'erreur.

Le message d'erreur ne disait rien sur la vue en question, mais "se plaignait" de l'une des tables, qui était utilisée dans la vue.

0
xyz