Error: comando de selección negó a '' @ usuario 'para la tabla ''
-
16-10-2019 - |
Pregunta
En mi página web, estoy usando la base de datos MySQL. Estoy usando un servicio web donde hago en todas las manipulaciones relacionadas con mi base de datos.
Ahora En uno de los métodos de ese servicio web, me sale el siguiente error.
comando de selección negado al usuario '' @ '' para la tabla ''
¿Qué podría estar mal?
A continuación se muestra el código donde consigo ese error. Traté de depuración y encontró que falla en la línea
MySqlDataReader result1 = command1.ExecuteReader();
Aquí está mi código:
String addSQL = "Select Max(`TradeID`) from `jsontest`.`tbl_Positions";
MySqlConnection objMyCon = new MySqlConnection(strProvider);
objMyCon.Open();
MySqlCommand command = objMyCon.CreateCommand();
command.CommandText = addSQL;
MySqlDataReader result = command.ExecuteReader();
//int j = command.ExecuteNonQuery();
while (result.Read())
{
MaxTradeID = Convert.ToInt32(result[0]);
}
objMyCon.Close();
for (i = 1; i <= MaxTradeID; i++)
{
String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
MySqlConnection objMyCon1 = new MySqlConnection(strProvider);
objMyCon1.Open();
MySqlCommand command1 = objMyCon1.CreateCommand();
command1.CommandText = newSQL;
MySqlDataReader result1 = command1.ExecuteReader();
objMyCon2.Close();
Solución
base de datos de usuario no tiene permiso para hacer consulta de selección.
Puede conceder el permiso al usuario si tiene acceso root para MySQL
http://dev.mysql.com/doc/refman/ 5.1 / es / grant.html
Su segunda consulta es diferente de base de datos en diferentes mesa.
String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
Y el usuario se está conectando con el no tiene permiso para acceder a los datos de esta base de datos o esta tabla en particular.
Tenga en cuenta que esta cosa?
Otros consejos
Estoy seguro de que la edición de su creador original hace tiempo que se ha resuelto. Sin embargo, he tenido este mismo problema, así que pensé que le explicaba lo que estaba causando este problema para mí.
Me estaba haciendo una consulta de unión con dos mesas - 'foo' y 'foo_bar'. Sin embargo, en mi instrucción SQL, que tenía un error tipográfico: 'foo.bar'
Así que, en vez de decirme que la tabla 'foo.bar' no existe, el mensaje de error indica que el comando se ha negado -. Como si yo no tengo permisos
Espero que esto ayude a alguien.
comando de selección negado al usuario '' @ '' para la tabla ''
Este problema es básicamente una condición generada después de unirse a la base de datos son el nombre equivocado en su consulta de unión. Así que por favor marque la consulta de selección en el nombre de la tabla después de unirse a la base de datos.
A continuación resolverlo por ejemplo sus ans correctas mercancías
string g = " SELECT `emptable`.`image` , `applyleave`.`id` , `applyleave`.`empid` , `applyleave`.`empname` , `applyleave`.`dateapply` , `applyleave`.`leavename` , `applyleave`.`fromdate` , `applyleave`.`todate` , `applyleave`.`resion` , `applyleave`.`contact` , `applyleave`.`leavestatus` , `applyleave`.`username` , `applyleave`.`noday` FROM `DataEMP_ems`.`applyleave` INNER JOIN `DataEMP_ems`.`emptable` ON ( `applyleave`.`empid` = `emptable`.`empid` ) WHERE ( `applyleave`.`leavestatus` = 'panding' ) ";
La tabla de unión es imputable
y applyleave
en la misma base de datos, pero el nombre de base de datos en línea es diversa a continuación, dado error en este problema.
Este problema me pasó porque tenía el conjunto hibernate.default_schema
a una base de datos diferente a la que en el origen de datos.
Al ser estricta en mis permisos de usuario de MySQL, cuando se trató de hibernación para consultar una tabla que cuestionó el que está en la base de datos hibernate.default_schema
para los que el usuario no tenía permisos.
Su desafortunado que mysql no especifica correctamente la base de datos en este mensaje de error, ya que eso hubiera aclarado las cosas de inmediato.
Debe conceder permisos SELECT para el usuario de MySQL que se conecta a MySQL. Ver:
http://dev.mysql.com/doc/ RefMan / 5,0 / en / privilegio-system.html
http://dev.mysql.com/ doc / RefMan / 5,0 / en / user-cuenta-management.html
Yo tenía exactamente el mismo mensaje de error haciendo una exportación de la base de datos a través de Sequel Pro en un mac. Yo era el usuario root, así que sabía que no era permisos. Luego probé con mysqldump y recibido un mensaje de error diferente: Got error: 1449: El usuario especificado como un definidor ( 'joey'@'127.0.0.1') no existe cuando se utiliza LOCK TABLES
Ahh, me había restaurado esta base de datos desde una copia de seguridad en el sitio dev y no había creado ese usuario en esta máquina. "Conceda a todos en a 'joey'@'127.0.0.1' identificado por 'joeypass';.". Resolvieron el problema
hth
si está trabajando desde una aplicación de formas de las ventanas esto funcionó para mí "Server = localhost; ID de usuario = dbuser; password = contraseña; base de datos = dbname; Cuerpos utilizar el procedimiento = false;"
sólo tiene que añadir los "Cuerpos utilizar el procedimiento = false" al final de la cadena de conexión.
El problema es más probable que entre a. y una _. Por ejemplo en mi consulta me puso
SELECT ..... DE LOCATION.PT
en lugar de
SELECT ..... DE LOCATION_PT
Así que creo que MySQL pensaría UBICACIÓN como un nombre de base de datos y el acceso estaba dando error de privilegio.
Yo tenía el mismo problema. Esto se relaciona con hibernación. He cambiado la base de datos de dev para la producción en hibernate.cfg.xml pero había Catálogo de atributo en otros archivos hbm.xml con el antiguo nombre de la base y que estaba causando el problema.
En lugar de decirle a nombre de la base de datos incorrectos, se mostró de error de permiso denegado.
Así que asegúrese de cambiar el nombre de la base de todo el mundo o simplemente quitar el atributo de catálogo
Yo tenía el mismo problema. Me fue muy frustrante con él. Tal vez esto no responde a la pregunta, pero sólo quiero compartir mi experiencia de error, y puede haber otros que sufrieron como yo. Evidentemente era sólo de mi baja precisión.
Yo tenía esto:
SELECT t_comment.username,a.email FROM t_comment
LEFT JOIN (
SELECT username,email FROM t_un
) a
ON t_comment.username,a.email
que se supone que es como sigue:
SELECT t_comment.username,a.email FROM t_comment
LEFT JOIN (
SELECT username,email FROM t_un
) a
ON t_comment.username=a.username
A continuación, mi problema se resolvió en ese día, había estado tuvo problemas en dos horas, sólo para este problema.
Un poco tarde a la fiesta, pero, en caso de tener acceso a la raíz, puede hacer lo siguiente directamente:
Entre en su MySQL como root,
$ mysql -u root -p
Mostrar bases de datos;
mysql>SHOW DATABASES;
Seleccione la base de datos MySQL, que es donde se encuentra toda la información privilegios
mysql>USE mysql;
Mostrar las tablas.
mysql>SHOW TABLES;
El cuadro relativo a los privilegios para su caso es 'db', así que vamos a ver lo que tiene columnas:
mysql>DESC db;
Con el fin de enumerar los privilegios de usuarios, escriba el siguiente comando, por ejemplo:
mysql>SELECT user, host, db, Select_priv, Insert_priv, Update_priv, Delete_priv FROM db ORDER BY user, db;
Si no puede encontrar que el usuario o si ves que ese usuario tiene una 'N' en la columna de la SELECT_priv, entonces usted tiene que INSERT o UPDATE en consecuencia:
INSERT:
INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv) VALUES ('localhost','DBname','UserName','Y' ,'N','N','N');
ACTUALIZACIÓN:
UPDATE db SET Select_priv = 'Y' WHERE User = 'UserName' AND Db = 'DBname' AND Host='localhost';
Por último, escriba el comando siguiente:
mysql>FLUSH PRIVILEGES;
Ciao.
Al igual que en otras respuestas que tenía la señorita tecleó la consulta.
tuve -
SELECT t.id FROM t.table LEFT JOIN table2 AS t2 ON t.id = t2.table_id
Debería haber sido
SELECT t.id FROM table AS t LEFT JOIN table2 AS t2 ON t.id = t2.table_id
Mysql estaba tratando de encontrar una base de datos denominada T que el usuario no tiene permiso para.