반응형
"중복 키 업데이트 시 [...] 삽입" 문에 대한 권한이 없지만 "삽입" 및 "업데이트"를 개별적으로 수행하기에 충분합니다.
데이터베이스 사용자가 가지는 권한을 최소한으로 줄이려고 노력했습니다.그렇게 함으로써 저는 다음과 같은 상황을 알아차렸습니다.
데이터베이스가 있습니다.test
사용자와user
다음과 같은 권한을 갖습니다.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'%';
GRANT SELECT, INSERT ON test.test TO 'user'@'%';
GRANT UPDATE (y) ON test.test TO 'user'@'%';
그test
테이블(InnoDB)은 다음과 같이 정의됩니다.
create table test
(
x int null,
y int null
);
create unique index test_x_uindex on test (x);
나는 뛸수 있습니다insert
그리고.update
와 같은 질문들
INSERT INTO test (x,y) VALUES (1,1), (2,2);
UPDATE test SET y = 3 WHERE x = 1;
하지만 달리기
INSERT INTO test (x,y) VALUES (2,4) ON DUPLICATE KEY UPDATE y = VALUES(y);
결과를 보다
오류 1143 (42000):UPDATE 명령이 'test' 테이블의 'x' 열에 대해 사용자 'sap'@'localhost'에 거부되었습니다.
문장이 실제로 업데이트하지 않고 새 행을 삽입하는 경우에도 마찬가지입니다.
이건 좀 이상해 보여요.직접 관련된 버그 보고서를 찾을 수 없었습니다.MySQL에 대한 오래된 것(닫혔지만 누군가가 실제로 수정되지 않았다고 말했습니다.저는 테스트를 하지 않았습니다.MySQL 8.0 설명서에서 업데이트 권한은 변경된 열에만 필요하다고 언급합니다.MariaDB 문서에는 권한 요구 사항이 언급되어 있지 않습니다.
제가 뭘 놓쳤나요?
이는 모두 MariaDB 10.2.16에서 테스트되었습니다.
언급URL : https://stackoverflow.com/questions/53505686/missing-privilege-for-insert-on-duplicate-key-update-statement-but-enou
반응형
'source' 카테고리의 다른 글
대용량 스프레드시트용 Apache POI Java Excel 성능 (0) | 2023.10.29 |
---|---|
Oracle SQL*Plus를 시작하는 동안 TNS Protocol 어댑터 오류가 발생했습니다. (0) | 2023.10.29 |
워드프레스의 빈 광고를 보여주는 Google AdSense (0) | 2023.10.29 |
휴대용 비교 및 스왑(원자 작동) C/C++ 라이브러리? (0) | 2023.10.24 |
모든 요청에 대해 세션 시간 초과가 재설정됩니까? (0) | 2023.10.24 |