데이터베이스의 모든 테이블에 대한 액세스 권한 부여


13

나는 최근 서버의 한 사용자와 일반 액세스 권한을 공유하기를 원해요 나는 간단한 것을 깨달았다 CREATE USERGRANT ALL ON DATABASE명령은 그에게 간단한 실행하지 않은 SELECT데이터에 있습니다.

주어진 데이터베이스에서 지정된 사용자에게 모든 테이블에 대한 권한을 부여 public하고 싶지만 일종의 권한이 허용되는지 알지 못하므로 전체 스키마에 대한 액세스 권한을 부여하는 것이 가장 좋은 방법인지 확실 하지 않습니다. 단계적 확대. 다른 방법이 있습니까?


왜 안돼 GRANT SELECT ON TableName TO [Domain\User]? 일반적으로 db_datareader필요한 모든 테이블에 대한 읽기 권한 만 있으면 사용자를 역할에 할당 하지만 얼마나 세분화되고 싶은지 잘 모르겠습니다.
Kris Gruttemeyer

데이터베이스의 모든 테이블에 모든 CRUD를 부여하고 싶습니다. 또한이 데이터베이스 내부의 DROPping 및 CREATE도 유용 할 수 있습니다.
d33tah

답변:


19

에 대한 권한 DATABASE은 데이터베이스에 대한 일반 연결 권한 만 부여합니다. 해당 권한 만 가진 사용자는 일반 대중이 볼 수있는 내용 만 볼 수 있습니다.

모든 테이블에 대한 읽기 액세스 권한을 부여하려면 모든 스키마 및 테이블에 대한 권한도 필요합니다.

GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

향후 스키마 및 테이블에 대한 기본 권한을 설정할 수도 있습니다 . DB에 객체를 생성하는 모든 역할에 대해 실행

ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;

그러나 전체 개념을 먼저 이해해야합니다 .
그리고 그룹 역할에 권한을 번들로 묶은 다음 사용자 역할에 그룹 역할을 부여하거나 취소하는 것이 거의 항상 좋습니다. 관련 :


인가 myusr오타는? 그렇지 myuser않습니까?
attomos 2019

1
@attomos :이 예제에서는 다른 사용자 여야합니다. 나는 명확히했다.
Erwin Brandstetter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.