오류 : 선택 명령이 사용자에게 거부되었습니다.'@''테이블''
내 웹 사이트에서 MySQL 데이터베이스를 사용하고 있습니다. 데이터베이스 관련 조작을 모두 수행하는 웹 서비스를 사용하고 있습니다.
이제 해당 웹 서비스의 방법 중 하나에서 다음 오류가 발생합니다.
테이블 ''에 대해 거부 ''@ ''사용자에게 거부 된 명령 선택
무엇이 잘못입니까?
아래는 오류가 발생하는 코드입니다. 나는 실패를 시도했지만 라인에서 실패한다는 것을 알았습니다.
MySqlDataReader result1 = command1.ExecuteReader();
내 코드는 다음과 달라집니다.
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();
데이터베이스 사용자에게 쿼리를 선택할 수있는 권한이 없습니다.
mysql에 대한 루트 액세스 권한이 있으면 사용자에게 권한을 부여 할 수 있습니다.
http://dev.mysql.com/doc/refman/5.1/en/grant.html
두 번째 쿼리는 다른 테이블의 다른 데이터베이스에 있습니다.
String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
연결하려는 사용자는이 데이터베이스 또는이 특정 테이블의 데이터에 액세스 할 수있는 권한이 없습니다.
이거 생각해 보셨나요?
나는 원래 포스터의 문제가 오랫동안 해결 될 것이라고 확신합니다. 그러나 나는 이와 같은 문제가 있었기 때문에 문제의 원인을 설명하겠다고 생각했습니다.
'foo'와 'foo_bar'라는 두 개의 테이블로 통합 쿼리를 수행했습니다. 그러나 SQL 문에는 'foo.bar'라는 오타가 있습니다.
따라서 'foo.bar'는 테이블이 존재하지 않는다고 알려주는 대신 오류 메시지는 마치 권한이없는 명령이 거부한다는 나타냅니다.
이것이 누군가를 돕기를 바랍니다.
테이블 ''에 대해 거부 ''@ ''사용자에게 거부 된 명령 선택
이 문제는 기본적으로 조인 쿼리에서 조인 조건이 잘못된 데이터베이스 이름 이후에 생성됩니다. 따라서 데이터베이스 후 조인 테이블 이름에서 선택한 쿼리를 확인하십시오.
그런 다음 예를 들어 올바른 ans ware를 해결하십시오.
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' ) ";
는 테이블 조인 imputable
과 applyleave
같은 데이터베이스하지만 온라인 데이터베이스 이름이 다음이 문제에 오류가 주어짐 diffrent 켜짐입니다.
이 문제 hibernate.default_schema
는 DataSource의 데이터베이스와 다른 데이터베이스로 설정 되었기 때문에 나에게 발생했습니다 .
mysql 사용자 권한에 엄격하기 때문에 최대 부여 모드에서 테이블을 쿼리 할 때 hibernate.default_schema
사용자에게 권한이없는 데이터베이스에있는 테이블을 쿼리했습니다 .
불행히도 mysql 이이 오류 메시지에서 데이터베이스를 지정하지 않아 즉시 정리할 수 있습니다.
MySQL에 연결하는 MySQL 사용자에게 SELECT 권한을 부여해야합니다. 보다 :
http://dev.mysql.com/doc/refman/5.0/en/privilege-system.html
http://dev.mysql.com/doc/refman/5.0/en/user-account-management.html
Mac에서 Sequel Pro를 통해 데이터베이스 내보내기를 수행하는 것과 똑같은 오류 메시지가 표시되었습니다. 나는 루트 사용자였으며 권한이 아니라는 것을 알았습니다. 그런 다음 mysqldump로 시도한 다른 오류 메시지가 나타납니다. 오류 발생 : 1449 : LOCK TABLES를 사용할 때 정의 자로 지정된 사용자 ( 'joey'@'127.0.0.1')가 존재하지 않습니다.
아, 개발 사이트의 백업에서 데이터베이스를 복원했지만 컴퓨터에서 해당 사용자를 만들지 않았습니다. "모든 권한을 부여 . 에 'joey'@'127.0.0.1' 'joeypass'로 이미지;"트릭을했다.
hth
Windows Forms 응용 프로그램에서 작업하는 경우 "server = localhost; user id = dbuser; password = password; database = dbname; Use Procedure Bodies = false;"
연결 끝에 "Use Procedure Bodies = false"를 추가하기 만하면됩니다.
문제는 아마도. 및 _. 내 질문에 내가 넣어
..... LOCATION.PT에서 선택
대신에
..... LOCATION_PT에서 선택
그래서 MySQL은 LOCATION을 데이터베이스 이름으로 생각하고 액세스 권한 오류를 제공 할 생각합니다.
나는 같은 문제가 있었다. 이 최대 유료 모드와 관련이 있습니다. hibernate.cfg.xml에서 데이터베이스를 개발에서 변경했지만 이전 데이터베이스 이름을 가진 다른 hbm.xml 파일에 카탈로그 속성이있는 문제가 발생했습니다.
잘못된 데이터베이스 이름을 알려주는 대신 Permission denied 오류를 표시했습니다.
따라서 모든 곳에서 데이터베이스 이름을 변경하거나 카탈로그 속성을 제거하십시오.
나는 같은 문제가 있었다. 나는 그것에 매우 실망했습니다. 이것은 질문에 대한 답이 아닐 수도 있지만, 오류 경험을 공유하고 싶을뿐입니다. 저처럼 고통을 겪은 다른 사람들이있을 수도 있습니다. 분명히 그것은 나의 낮은 정확도였습니다.
나는 이것을 가지고 있었다 :
SELECT t_comment.username,a.email FROM t_comment
LEFT JOIN (
SELECT username,email FROM t_un
) a
ON t_comment.username,a.email
다음과 같아야합니다.
SELECT t_comment.username,a.email FROM t_comment
LEFT JOIN (
SELECT username,email FROM t_un
) a
ON t_comment.username=a.username
그러다가 그날 문제가 해결되었고,이 문제로 인해 2 시간 만에 어려움을 겪었습니다.
파티에 조금 늦었지만 루트 액세스 권한이 있으면 다음을 직접 수행 할 수 있습니다.
mysql에 루트로 로그인하십시오.
$ mysql -u root -p
데이터베이스 표시;
mysql>SHOW DATABASES;
모든 권한 정보가있는 mysql 데이터베이스를 선택합니다.
mysql>USE mysql;
표를 표시합니다.
mysql>SHOW TABLES;
귀하의 사례에 대한 권한에 관한 표는 'db'이므로 어떤 열이 있는지 살펴 보겠습니다.
mysql>DESC db;
사용자 권한을 나열하려면 다음 명령을 입력하십시오. 예 :
mysql>SELECT user, host, db, Select_priv, Insert_priv, Update_priv, Delete_priv FROM db ORDER BY user, db;
해당 사용자를 찾을 수 없거나 해당 사용자가 Select_priv 열에 'N'이있는 경우 그에 따라 INSERT 또는 UPDATE를 수행해야합니다.
끼워 넣다:
INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv) VALUES ('localhost','DBname','UserName','Y' ,'N','N','N');
최신 정보:
UPDATE db SET Select_priv = 'Y' WHERE User = 'UserName' AND Db = 'DBname' AND Host='localhost';
마지막으로 다음 명령을 입력하십시오.
mysql>FLUSH PRIVILEGES;
차오.
다른 답변과 마찬가지로 쿼리를 입력하지 못했습니다.
나는-
SELECT t.id FROM t.table LEFT JOIN table2 AS t2 ON t.id = t2.table_id
그랬어 야 했어
SELECT t.id FROM table AS t LEFT JOIN table2 AS t2 ON t.id = t2.table_id
Mysql은 사용자에게 권한이없는 t라는 데이터베이스를 찾으려고했습니다.
'ProgramingTip' 카테고리의 다른 글
C #은 다중 상속을 지원합니까? (0) | 2020.12.31 |
---|---|
반환 형식에 새 형식을 정의 할 수 없습니다 .-C ++ (0) | 2020.12.31 |
UITableView의 iOS 문서 디렉토리에 아카이브 파일을 준비 하시겠습니까? (0) | 2020.12.31 |
신속하게 요금 버튼에 대한 링크를 추가 비용 부담해야합니까? (0) | 2020.12.31 |
Laravel 마이그레이션 : 클래스 "찾을 수 없음" (0) | 2020.12.31 |