programing

MySQL 보기만 볼 수 있고 다른 보기는 볼 수 없는 권한을 사용자에게 부여합니다.

bestprogram 2023. 10. 24. 21:27

MySQL 보기만 볼 수 있고 다른 보기는 볼 수 없는 권한을 사용자에게 부여합니다.

이 질문은 원래 MySQL 5.1.44를 사용하고 있었지만 MySQL 8.0+에도 적용 가능합니다.

내 애플리케이션의 다른 사용자가 삽입한 기록이 있는 테이블이 있다고 가정해 보겠습니다.특정 사용자에게 해당 테이블에서만 자신의 기록을 볼 수 있는 접근 권한을 부여하려면 어떻게 해야 합니까?제가 생각해 본적이 있습니다.VIEW그의 기록을 가지고 있지만, 그것만 볼 수 있는 MySQL 사용자를 어떻게 만들어야 할지 모르겠습니다.VIEW.

그래서, 오직 하나의 사용자에게만 접근할 수 있는 MySQL 사용자를 만드는 것이 가능합니까?VIEW? 이 사용자도 해당 사용자에 대한 읽기 전용 액세스 권한을 가질 수 있습니까?VIEW?

감사합니다!

추신: 제가 예를 들어 사용자라고 부르는 것은 자신의 애플리케이션을 사용하여 기록에 액세스하려는 자회사 사무실입니다.

GRANT SELECT ON database1.view1 TO 'someuser'@'somehost';

게다가.

GRANT SELECT ON <database_name>.<view_name>
TO <user>@<host>

또한 하는 것이 좋습니다.

GRANT SHOW VIEW
ON <database_name>.<view_name> TO <user>@<host>

많은 SQL UI 도구가 뷰 정의를 얻고 뷰에 적합하게 작동할 수 있도록 합니다.

GRANT SELECT ON <database name>.<view name>
TO <user>@<host> IDENTIFIED BY '<password>'

출처: MySQL 설명서

원래 질문은 실제로 행을 특정 사용자가 소유한 행으로 제한하는 방법을 묻는 것이라고 생각합니다. (사용자당 하나의 보기를 생성한 후에 그것만 허용한다는 생각은 해결책처럼 보입니다.)

사용자() 참조를 데이터 테이블에 삽입한 다음 필터링하면 이 작업을 수행할 수 있습니다.

MySQL 5.6 사용.SELECT를 현재 사용자가 소유한 레코드로만 제한하는 보기 만들기:

-- check the current user
select user();

create table t1 (myId int, mydata varchar(200), myName varchar(200));

insert t1 select 1, 'my data yes', user();
insert t1 select 2, 'my data yes2', user();
insert t1 select 3, 'my data no', 'joe';

select * from t1;

create or replace view v1 AS
select * from t1 where myName = user();

select * from v1;

보기를 내가 의심하는 것만 읽으려면.그런 다음 ALERGUM = TEMPTable 절을 사용하여 뷰를 생성해야 합니다.

이렇게 하면 임시 테이블을 만들어야 하는 뷰의 장점만 읽힙니다.

읽기 전용을 달성하는 또 다른 방법은 집계 함수를 고정하는 것입니다.예를 들어, 표를 기준으로 모든 열을 표시하는 보기가 있는 경우, 선택 항목에 구분 기호를 붙일 수 있습니다.

언급URL : https://stackoverflow.com/questions/3108656/grant-a-user-permission-to-only-view-a-mysql-view-and-nothing-else