오류: 테이블 " "에 대해 사용자 "@" 에 대해 명령 거부됨
제 웹사이트에서는 MySQL 데이터베이스를 사용하고 있습니다.모든 데이터베이스 관련 조작을 수행하는 웹 서비스를 사용하고 있습니다.
이 웹 서비스의 방법 중 하나에서 다음 오류가 발생합니다.
테이블 '<table-name>'에 대해 사용자 '<userid>'@'에 대해 명령어가 거부되었습니다.< ip - address >
뭐가 잘못됐나요?
그 에러가 발생하는 코드는 다음과 같습니다.디버깅을 시도했더니 회선에서 실패합니다.
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();
오리지널 포스터의 문제는 해결된 지 오래라고 생각합니다.다만, 같은 문제가 있었기 때문에, 이 문제의 원인을 설명하려고 생각하고 있었습니다.
나는 두 개의 테이블 - 'foo'와 'foo_bar'로 유니언 쿼리를 하고 있었다.그런데 SQL 스테이트먼트에서 'foo.bar'이라는 오타가 있었습니다.
따라서 오류 메시지는 'foo.bar' 테이블이 존재하지 않음을 알려주는 대신 명령이 거부되었음을 나타냅니다. 권한이 없는 것처럼 표시됩니다.
이게 도움이 됐으면 좋겠네요.
데이터베이스 사용자에게 선택 쿼리를 수행할 수 있는 권한이 없습니다.
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 + "'";
접속하고 있는 유저에게는, 이 데이타베이스 또는 특정의 테이블의 데이터에 액세스 할 수 있는 권한이 없습니다.
이런 거 생각해봤어?
테이블 "에 대해 사용자 "@"에 대해 select 명령을 거부했습니다.
이 문제는 기본적으로 Join 쿼리에서 Join 조건이 잘못된 데이터베이스 이름이 된 후에 발생합니다.따라서 데이터베이스 뒤에 있는 조인 테이블 이름에서 선택 쿼리를 확인하십시오.
그런 다음 예를 들어 올바른 제품을 해결합니다.
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
온라인 데이터베이스 이름이 다르면 이 문제에 대해 오류가 발생합니다.
이 문제는 나에게 일어났다. 왜냐하면 나는 이 문제를 가지고 있었다.hibernate.default_schema
데이터 소스
사용자 때문에 을 쿼리하려고 하면 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.1')가 존재하지 않습니다.
아, 개발 사이트의 백업에서 이 데이터베이스를 복원했지만 이 기계에서 해당 사용자를 생성하지 않았습니다."모든 것을 "pass"로 식별되는 "pass"@"pass.0.1"로 변환합니다."가 성공했습니다.
h번째
Windows 양식 어플리케이션에서 작업하는 경우 이 방법이 도움이 되었습니다.
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
ㅇㅇㅇㅇㅇㅇㅇ를 돼요."Use Procedure Bodies=false"
연결 문자열 끝에 있습니다.
저는 실수로 로컬 데이터베이스 이름을 SQL 쿼리에 포함시켰기 때문에 도입 시 접근 거부 문제가 발생했습니다.
SQL 쿼리에서 데이터베이스 이름을 삭제했고 수정되었습니다.
이 문제는 대부분 와 _ 사이에 있습니다.내 질문에서 내가 넣은 것을 말한다.
선택 .....로케이션에서PT
대신
선택 .....위치_PT부터
그래서 MySQL은 LOCATION을 데이터베이스명으로 생각하고 접근 권한 오류를 발생시켰다고 생각합니다.
저도 같은 문제가 있었어요.이것은 휴지 상태에 관계하고 있습니다.hibernate.cfg.xml에서 데이터베이스를 dev에서 production으로 변경했는데 오래된 데이터베이스 이름의 다른 hbm.xml 파일에 카탈로그 속성이 있어 문제가 발생하였습니다.
잘못된 데이터베이스 이름을 알려주는 대신 Permission denied 오류가 표시되었습니다.
따라서 데이터베이스 이름을 모두 변경하거나 카탈로그 속성을 삭제하십시오.
MySQL Workbench 최신 버전 8.0.18로 업그레이드한 후 문제가 해결되었습니다.
권한을 다시 부여해 보십시오.
GRANT ALL PRIVILEGES ON the_database.* TO 'the_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
부인
- 백업 먼저.
- 실행하기 전에 질의문을 확인하십시오.
- 넣어야 돼요.
WHERE
「필터」(필터)입니다.
루트 액세스 권한이 있거나 충분한 권한이 있는 경우 다음 작업을 직접 수행할 수 있습니다.
루트로 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_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
그 날 문제가 해결되었고, 이 문제 때문에 두 시간 만에 어려움을 겪었습니다.
이 문제는 해결되었을 것입니다.데이터베이스명에 오타가 있어 테이블명에 이 에러가 발생하고 있는 것을 지적하고 싶습니다.따라서 이 경우 오타를 확인하는 것이 좋습니다.
내가 놓친 다른 답들과 비슷하게, 질의문을 입력했다.
저는...
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라는 데이터베이스를 찾으려고 했습니다.
언급URL : https://stackoverflow.com/questions/4767055/error-select-command-denied-to-user-useridip-address-for-table-table
'programing' 카테고리의 다른 글
C의 등식을 위한 구조를 어떻게 비교합니까? (0) | 2022.10.23 |
---|---|
숫자의 소수점 이하/정수 여부를 확인합니다. (0) | 2022.10.23 |
플라스크에 http 헤더를 넣는 방법 (0) | 2022.10.23 |
Java, Apache kafka에서 항목의 메시지 수를 가져오는 방법 (0) | 2022.10.23 |
MySQL 결과 주문 (0) | 2022.10.23 |