MySql : 읽기 전용 옵션을 허용하시겠습니까?
DB 스키마에 대한 모든 읽기 권한을 부여하려는 사용자가 있습니다.
한 가지 방법은 다음과 같습니다.
GRANT SELECT, SHOW_VIEW ON test.* TO 'readuser'@'%';
허가된 모든 읽기 작업을 그룹화할 수 있는 방법이 있습니까?
데이터베이스의 모든 읽기 작업을 나타내는 단일 권한이 있는 경우.
"모두 읽기"를 어떻게 정의하느냐에 따라 다릅니다.
테이블 및 뷰에서 "읽기"는SELECT
특권"모두 읽음"이 그 의미라면, 네:
GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';
하지만, 당신은 모든 것을 보는 능력, "보고 있지만 만지지 않는" 능력을 의미하는 것처럼 들린다.자, 여기 생각나는 다른 종류의 독서가 있습니다.
뷰의 정의를 읽는 것은SHOW VIEW
특권
다른 사용자가 현재 실행 중인 쿼리 목록을 "읽기"는PROCESS
특권
현재 복제 상태를 "읽는 중"은REPLICATION CLIENT
특권
이러한 정보 중 하나 또는 모두가 해당 사용자의 특성에 따라 노출하려는 정보보다 더 많은 정보를 노출할 수 있습니다.
이 내용을 읽고 싶은 경우, 이러한 모든 권한(또는 사용 가능한 다른 권한)을 하나의 권한으로 결합할 수 있습니다.GRANT
진술.
GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...
단, 다른 특권의 서브셋을 부여하는 단일 특권은 존재하지 않습니다.이것이 요구되고 있는 것처럼 들립니다.
특정 클래스의 사용자에 대해 일반적으로 이루어지는 정확한 허가를 기억할 필요 없이 작업을 수동으로 수행할 수 있는 보다 쉬운 방법을 찾고 있는 경우 문을 검색하여 동등한 사용자의 허가를 재생성하고 이를 변경하여 유사한 권한을 가진 새 사용자를 생성할 수 있습니다.
mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for not_leet@localhost |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
비밀번호와 함께 추가할 새 사용자와 일치하도록 'not_leet' 및 'localhost'를 변경하면 재사용이 가능합니다.GRANT
스테이트먼트를 사용하여 새 사용자를 만듭니다.
한 번의 조작으로 사용자에게 제한된 특권 세트를 설정 및 부여하거나 허가되지 않은 특권을 삭제하는 경우 필요한 모든 작업을 캡슐화한 저장 프로시저를 작성하면 됩니다.절차의 본문 내에서, 당신은 그 과정을GRANT
동적 SQL을 사용하거나 인가 테이블 자체를 직접 조작할 수 있습니다.
데이터베이스 관리자에 관한 이 최근 질문에서 포스터는 권한이 없는 사용자가 다른 사용자를 수정할 수 있는 기능을 원했습니다.물론 이것은 보통 할 수 있는 일이 아닙니다.다른 사용자를 변경할 수 있는 사용자는 정의상 권한 없는 사용자가 아닙니다.다만, 스토어드 프로시저는 그 CA에서 좋은 솔루션을 제공합니다.보안 콘텍스트와 함께 동작하기 때문에DEFINER
""를 가진 모든 "EXECUTE
절차에서 수행하는 특정 작업을 수행할 수 있도록 에스컬레이션된 권한을 일시적으로 가정할 수 있는 권한입니다.
GRANT SELECT ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';
이 조작에 의해서, 다음의 유저가 작성됩니다.SELECT
보기를 포함한 모든 데이터베이스에 대한 권한.
사용자에게 부여할 수 있는 다양한 권한은 다음과 같습니다.
ALL PRIVILEGES- This would allow a MySQL user all access to a designated database (or if no database is selected, across the system)
CREATE- allows them to create new tables or databases
DROP- allows them to them to delete tables or databases
DELETE- allows them to delete rows from tables
INSERT- allows them to insert rows into tables
SELECT- allows them to use the Select command to read through databases
UPDATE- allow them to update table rows
GRANT OPTION- allows them to grant or remove other users' privileges
특정 사용자에게 권한을 부여하려면 다음 프레임워크를 사용합니다.
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
나는 이 기사가 매우 도움이 된다는 것을 알았다.
MySQL 8은 다릅니다.
다음 두 단계로 수행해야 합니다.
CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY 'some_strong_password';
GRANT SELECT, SHOW VIEW ON *.* TO 'readonly_user'@'localhost';
flush privileges;
여기서 찾은 단계별 가이드입니다.
MySQL에 대한 읽기 전용 데이터베이스 사용자 계정을 생성하려면 다음과 같이 하십시오.
UNIX 프롬프트에서 MySQL 명령줄 프로그램을 실행하고 다음 명령을 입력하여 관리자로 로그인합니다.
mysql -u root -p
루트 계정의 암호를 입력합니다.mysql 프롬프트에서 다음 절차 중 하나를 수행합니다.
사용자가 임의의 호스트에서 데이터베이스에 액세스할 수 있도록 하려면 다음 명령을 입력합니다.
grant select on database_name.* to 'read-only_user_name'@'%' identified by 'password';
수집기를 데이터베이스와 동일한 호스트에 설치하는 경우 다음 명령을 입력합니다.
grant select on database_name.* to 'read-only_user_name' identified by 'password';
이 명령어는 사용자에게 로컬호스트로부터의 데이터베이스에 대한 읽기 전용 액세스만 제공합니다.수집기가 설치될 호스트의 호스트 이름 또는 IP 주소를 알고 있는 경우 다음 명령을 입력합니다.
grant select on database_name.* to 'read-only_user_name'@'host_name or IP_address' identified by 'password';
호스트 이름은 DNS 또는 로컬 호스트 파일로 확인할 수 있어야 합니다.mysql 프롬프트에서 다음 명령을 입력합니다.
flush privileges;
「」라고 입력합니다.quit
.
다음으로 명령어와 확인 메시지의 예를 나타냅니다.
mysql> grant select on dbname.* to 'readonlyuser'@'%' identified
by 'pogo$23';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
@Michael - sqlbot은 자신의 투고에서 대부분의 포인트를 잘 다루었지만, 1점이 누락되어 있기 때문에, 그것을 다루려고 하고 있습니다.
단순한 사용자에게 읽기 권한을 제공하려는 경우(관리자가 아님)
GRANT SELECT, EXECUTE ON DB_NAME.* TO 'user'@'localhost' IDENTIFIED BY 'PASSWORD';
주의: 보고서를 생성하는 저장 프로시저가 있는 경우 사용자가 데이터를 읽을 수 있도록 EXECUTE가 필요합니다(선택된 문장이 거의 없음).
localhost를 사용자가 DB에 연결할 특정 IP로 대체합니다.
기타 읽기 권한:
- SHOW VIEW : 뷰 스키마를 표시하는 경우.
- 복제 클라이언트: 사용자가 복제/슬레이브 상태를 확인해야 하는 경우.하지만 모든 DB에 대한 권한을 부여해야 합니다.
- PROCESS : 사용자가 실행 중인 프로세스를 체크해야 하는 경우.모든 DB에서만 작동합니다.
읽기 권한을 부여한 후에만 보기를 읽으려면 DDL 정의 보기에서 알고리즘 = TEMPTABLE을 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/20036547/mysql-grant-read-only-options
'programing' 카테고리의 다른 글
__hash__()를 구현하는 올바르고 좋은 방법은 무엇입니까? (0) | 2022.11.17 |
---|---|
arguments.callee.caller 속성이 JavaScript에서 폐지된 이유는 무엇입니까? (0) | 2022.11.17 |
강조 표시/선택한 텍스트를 가져옵니다. (0) | 2022.11.17 |
fragment화 권한을 확인하는 방법 (0) | 2022.11.17 |
템플릿 엔진으로 언더스코어.js를 사용하는 방법 (0) | 2022.11.17 |