2012-06-08 19 views
23

Ho problemi con una determinata query su uno dei miei server. In tutti gli altri posti che ho provato funziona perfettamente, ma sul server che voglio usarlo non funziona.Errore MySQL: # 1142 - comando SELECT negato all'utente

È circa il seguente 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 

Questo è il codice errore che ottengo da esso:

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

Le tabelle: 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 ; 

PROJECTEN :

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 ; 

La parte strana è che ogni altra query sia sulla tabella 'projecten' che sulla tabella 'facturen' funziona perfettamente, anche questa query funziona bene su altri due server.

+0

cosa è bt2 in bt2.projecten? –

+0

problema di privilegi? –

+0

Un mio errore dal mio poiché l'ho copiato da qui dal mio vecchio database. Non era presente nel database principale, quindi il problema non è risolto. Inoltre non è un problema di privilegio da quando ho avuto pieno accesso. – Seph

risposta

11

è necessario concedere le autorizzazioni SELECT all'utente di MySQL che è la connessione a MySQL

stessa domanda qui Error: select command denied to user '<userid>'@'<ip-address>' for table '<table-name>'

vedere le risposte del collegamento;)

+0

Già provato e non funziona ancora, ma grazie comunque. – Seph

+3

Hai trovato una risposta a questo? Ho lo stesso problema ora. L'utente ha i privilegi, ma non può selezionare da questa tabella. – Kenzo

+0

Può essere un'espressione SELECT errata, questo si verifica in 5.7 (sembra più severo) – nvvetal

2

Questo è esimo problema privilegi nella vostra utenti del database. prima controlla e concedi l'autorizzazione all'utente "marco" nell'host locale

1

Quindi il problema che ho riscontrato era che ... l'applicazione che ho usato per concedere le autorizzazioni ha convertito Schema.TableName in una singola istruzione DB nella tabella sbagliata , quindi la concessione era davvero sbagliata, ma sembrava corretta quando facevamo un SHOW GRANTS FOR UserName se non stavi prestando molta attenzione a GRANT SELECT vs GRANT TABLE SELECT. Correzione manuale della sovvenzione Selezionare sulla tabella con escape corretto di Schema. Table risolto il mio problema.

Può non essere correlato, ma posso immaginare se un client fa questo errore, un altro potrebbe anche.

Spero che sia utile.

-2

Nel browser di query MySQL andare su scheda Strumenti> Amministratore MySQL> Gestione utenti e quindi assegnare i privilegi all'utente.

+0

la domanda non riguardava un browser non specificato, solo puro MySQL – SBH

4

Ho avuto anche questo problema e per me il problema era che mi sono spostato su un nuovo server e sul database con cui stavo cercando di connettermi con il mio codice PHP modificato da "my_Database" a "mio_database".

11

Ho affrontato la stessa situazione ma è buffo che il motivo dell'errore fosse dovuto all'utilizzo del database o del nome dello schema errati.

È vero che più problemi possono portare all'errore che hai menzionato.

-2

si tratta della privallage dell'utente nel mysql, quindi è necessario impostare le concessioni più grandi con i propri utenti.

fare questo!

nel terminale, inserire il codice mysql> show grants;

quindi modificare il seguente codice come questo:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*3F9DF5A32114E05C12C50A83EAE02991016C917B' WITH GRANT OPTION;

allora sarà fatto.

3

Questo errore si verifica anche per un errore di sintassi dovuto all'aliasing del nome tabella.

Ad esempio, quando eseguiti sotto ricerca,

select * from a.table1, b.table2 where a.table1= b.table2

sotto l'errore si verifica:

MySQL Error: #1142. Response form the database. SELECT command denied to user "[email protected]" for table "table1"

Soluzione: Sintassi di alias tablename dovrebbe essere utilizzato adeguata soluzione sintassi sopra esempio> seleziona * da tabella1 a, tabella2 b dove a.table1 = b.table2

Problemi correlati