webentwicklung-frage-antwort-db.com.de

MySQL-Fehler: # 1142 - SELECT-Befehl für Benutzer verweigert

Ich habe Probleme mit einer bestimmten Abfrage auf einem meiner Server. An allen anderen Orten, an denen ich es getestet habe, funktioniert es einwandfrei, aber auf dem Server, den ich verwenden möchte, funktioniert es nicht.

Es geht um folgendes SQL:

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 

Dies ist der Fehlercode, den ich erhalte:

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

Die Tabellen: 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 ;

projekt:

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 ;

Der seltsame Teil ist, dass jede andere Abfrage sowohl in der Tabelle 'projecten' als auch in der Tabelle 'facturen' einwandfrei funktioniert. Diese Abfrage funktioniert auch auf zwei anderen Servern von mir einwandfrei.

26
Seph

Sie müssen dem MySQL-Benutzer, der eine Verbindung zu MySQL herstellt, SELECT-Berechtigungen erteilen

gleiche Frage wie hier Fehler: Auswahlbefehl an Benutzer '<Benutzer-ID>' @ '<IP-Adresse>' für Tabelle '<Tabellenname>' verweigert

siehe antworten des links;)

16
khaled_webdev

Ich sah mich der gleichen Situation gegenüber, aber es ist lustig, dass der Grund für den Fehler in der Verwendung der falschen Datenbank oder des falschen Schemanamens lag.

Es ist wahr, dass mehrere Probleme zu Fehlern führen können, die Sie erwähnt haben.

22
Vaibs

Dieser Fehler tritt auch bei einem Syntaxfehler auf, der aufgrund eines Aliasing-Tabellennamens aufgetreten ist.

Zum Beispiel, wenn unter Abfrage ausgeführt,

wählen Sie * aus a.Tabelle1, b.Tabelle2, wobei a.Tabelle1 = b.Tabelle2

der folgende Fehler tritt auf:

MySQL-Fehler: # 1142. Antwort von der Datenbank. SELECT-Befehl an Benutzer "username @ ip" für Tabelle "table1" verweigert

Lösung: Die Syntax für den Alias-Tabellennamen sollte korrekt verwendet werden. Syntaxlösung für die obige Instanz> Wählen Sie * aus Tabelle1 a, Tabelle2 b, wobei a.Tabelle1 = b.Tabelle2

7
veena v.k.

Ich hatte auch dieses Problem und für mich war das Problem, dass ich auf einen neuen Server umgezogen bin und die Datenbank, zu der ich eine Verbindung herstellen wollte, mit meinem PHP Code geändert von "my_Database" in "my_database" .

5
John Lamberis

Dies ist das Privilegienproblem Ihrer Datenbankbenutzer. Überprüfen Sie zunächst den Benutzer 'macro' in localhost und erteilen Sie ihm die Berechtigung

3
Dhileepan

Das Problem, auf das ich gestoßen bin, war Folgendes: Die Anwendung, mit der ich die Berechtigungen erteilt habe, hat Schema.TableName in eine einzelne DB-Anweisung in der falschen Tabelle konvertiert. Die Erteilung war also in der Tat falsch, sah aber korrekt aus, als wir SHOW GRANTS ausführten FOR UserName, wenn Sie GRANT SELECT vs GRANT TABLE SELECT nicht sehr genau beobachtet haben. Das manuelle Korrigieren der Grant-Auswahl in Tabelle mit korrektem Escape von Schema.Table löste mein Problem.

Mag nicht verwandt sein, aber ich kann mir vorstellen, dass ein Kunde dies falsch macht, ein anderer auch.

Hoffe das ist hilfreich.

1
CodeJohnny

Dieser Fehler trat auf meinem Server auf, als ich eine Ansicht mit einem ungültigen Definierer importierte.

Das Entfernen der fehlerhaften Ansicht behebt den Fehler.

Die Fehlermeldung sagte nichts über die fragliche Ansicht aus, "beschwerte" sich jedoch über eine der Tabellen, die in der Ansicht verwendet wurden.

0
xyz