2012-06-08 336 views
23

Tengo problemas con una determinada consulta en uno de mis servidores. En todos los demás lugares que he probado, funciona completamente bien, pero en el servidor que quiero usar no funciona.Error de MySQL: # 1142 - comando SELECT denegado al usuario

Se trata de lo siguiente 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 

Este es el código de error que recibo de él:

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

Las tablas: 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 extraña es que cualquier otra consulta tanto en la tabla 'projecten' como en la tabla 'facturen' funciona completamente bien, también esta consulta funciona bien en otros dos servidores míos.

+0

¿qué es bt2 en bt2.projecten? –

+0

problema de privilegio? –

+0

Un error mío del mío desde que lo copié aquí desde mi base de datos anterior. No estaba allí en la base de datos principal, por lo que el problema no se soluciona. Además, no es un problema de privilegio ya que obtuve acceso completo. – Seph

Respuesta

11

necesita conceder permisos SELECT al usuario de MySQL que se conecta a MySQL

misma pregunta que aquí Error: select command denied to user '<userid>'@'<ip-address>' for table '<table-name>'

ver respuestas del enlace;)

+0

Ya lo intenté y todavía no funciona, pero gracias de todos modos. – Seph

+3

¿Encontró una respuesta a esto? Tengo el mismo problema ahora. El usuario tiene privilegios, pero no puede seleccionar desde esta única tabla. – Kenzo

+0

Puede ser una expresión SELECT incorrecta, esto ocurre en 5.7 (parece más estricto) – nvvetal

2

Esto es cuestión privilegios º en su usuarios de bases de datos. primer cheque y conceder permiso para el usuario 'Marco' en localhost

1

lo tanto, el problema que encontramos fue esto ... la aplicación solía conceder los permisos convirtieron el esquema.nombretabla en un solo estado de DB en la mesa equivocada , por lo que la concesión fue incorrecta, pero parecía correcta cuando hicimos un SHOW GRANTS FOR UserName si no prestaste mucha atención a GRANT SELECT vs GRANT TABLE SELECT. Corregir manualmente el Grant Select en la tabla w/proper escape de Schema. Table resolvió mi problema.

Puede no estar relacionado, pero me imagino que si un cliente hace esto mal, otro podría hacerlo también.

Espero que sea útil.

-2

En el buscador de consultas MySQL, vaya a la pestaña Herramientas> Administrador de MySQL> Administración de usuarios y luego dele los privilegios al usuario.

+0

la pregunta no era acerca de algún navegador no especificado, solo puro MySQL – SBH

4

Tuve este problema y, para mí, el problema fue que me mudé a un nuevo servidor y la base de datos a la que intentaba conectar con mi código PHP cambió de "my_Database" a "my_database".

11

Me enfrenté a la misma situación, pero es curioso que el motivo del error se debió al uso de la base de datos incorrecta o el nombre del esquema.

Es cierto que múltiples problemas pueden dar lugar al error que ha mencionado.

-2

se trata de la privallage del usuario en el mysql, por lo que debe establecer las subvenciones más grandes con sus usuarios.

Haz esto!

en la terminal, el código de poner mysql> show grants;

continuación, cambie el código siguiente así:

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

A continuación, se hará.

3

Este error también se produce cuando se produce un error de sintaxis debido al aliasing tablename.

Por ejemplo, cuando se ejecuta por debajo de consulta,

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

debajo de error se produce:

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

Solución: Sintaxis hasta Alias ​​nombre de tabla deben utilizarse adecuado, solución sintaxis, por ejemplo, por encima de> select * from table1 a, table2 b donde a.table1 = b.table2

Cuestiones relacionadas