MySQL의 제한된 수의 테이블에 사용자 액세스 허용
몇 가지 테스트를 실행하고 있는데 제 DB에 테이블 1개 또는 2개만 액세스할 수 있는 사용자를 만들 수 있는지 확인하려고 합니다.이게 어떻게 된 건지 아는 사람?아래 코드가 실패함:
GRANT SELECT ON testdb.fruits, testdb.sports TO joe@localhost IDENTIFIED BY 'pass';
오류가 내 구문에 오류가 있음을 나타냅니다.
두 명으로 나누어 실행GRANT
문:
GRANT SELECT ON testdb.fruits TO joe@localhost IDENTIFIED BY 'pass';
GRANT SELECT ON testdb.sports TO joe@localhost IDENTIFIED BY 'pass';
MySQL GRANT 구문은 다음에서 하나의 개체만 허용합니다.priv_level
위치: 사용할 수 있지만*
와일드카드로:
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]
object_type:
TABLE
| FUNCTION
| PROCEDURE
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
아래 부분은 MySQL 5.5에서 작동하지 않는 것 같습니다.MySQL에서 권한을 "감산"하는 방법은 왜 그런지 설명합니다.
허가하기 SELECT
모든 테이블에서 선택적으로 취소하면 다음 작업을 수행할 수 있는 작업은 다음과 같습니다.
GRANT SELECT ON testdb.* TO joe@localhost IDENTIFIED BY 'pass';
REVOKE ALL PRIVILEGES ON testdb.tblname FROM joe@localhost;
하지만 이것은 이상한 방법인 것 같고, 저는 개별적으로 취소하기보다는 개별적으로 승인할 것이라고 생각합니다.
mysql.tables_privable을 직접 사용할 수 있습니다.
INSERT INTO mysql.tables_priv (`Host`, `Db`, `User`, `Table_name`, `Grantor`, `Table_priv`)
VALUES
('%', DATABASE(), 'someuser', 'mytable1', CURRENT_USER, 'Select,Insert,Update,Delete'),
('%', DATABASE(), 'someuser', 'mytable2', CURRENT_USER, 'Select,Insert,Update,Delete')
이 표를 수동으로 업데이트한 후에는 명시적으로 실행해야 합니다.FLUSH PRIVILEGES
MySQL에 권한 캐시를 업데이트하도록 지시하기 위한 쿼리(사용 시 필요하지 않음)GRANT
)
언급URL : https://stackoverflow.com/questions/8369253/grant-user-access-to-limited-number-of-tables-in-mysql
'programing' 카테고리의 다른 글
Javascript 함수 및 기본 매개 변수, IE 및 Chrome에서 작동하지 않음 (0) | 2023.08.25 |
---|---|
jQuery 문자열에서 '-' 문자를 제거하는 중 (0) | 2023.08.25 |
Python 사전의 스레드 안전 (0) | 2023.08.25 |
jQuery에서 양식 이중 제출 방지 (0) | 2023.08.25 |
gitdiff를 stdout에 쓰도록 하는 방법은? (0) | 2023.08.25 |