문제

Informix와 함께 할 수 있습니다 grant select 같은 테이블에;

grant select on 'dba'.mytable to someuser as dba;

데이터베이스의 모든 테이블 에서이 작업을 수행하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

이를 수행하는 간단한 방법은 없습니다 (SQL 표준 또는 Informix에서). 특정 권한이 일반적으로 기본적으로 부여되기 때문에 일반적으로 필요하지 않습니다. 그러나 사실 당신은 더 많은 일반적인 운영을하고 싶고 어떤 옵션이 있는지 알고 싶다고 생각합니다.

목표로하는 일과 시스템을 설정하는 방법에 따라 다양한 방식으로 목표를 달성 할 수 있습니다.

무차별 부대 - 질문에 대한 직접적인 답

 SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;

이것에서 출력을 가져 와서 프로그램에 공급하십시오. 나는 사용한다 SQLCMD 원치 않는 출력을 생성하지 않기 때문에 작업의 경우 :

sqlcmd -d dbname -e "
 SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;" |
sqlcmd -d dbname -f -

껍질 주위에서 작업하려면 여분의 백 슬래시가 필요합니다. '-f -'옵션은 엄격하게 필요하지 않지만 두 번째 SQLCMD가 표준 입력에서 읽을 것임을 명시하게 만듭니다. DB -Access를 사용하는 경우 생성 된 언어에 대해 걱정해야합니다. 이것이 제가 처음에 SQLCMD를 쓴 이유입니다.

분명히,이 솔루션은 상당히 쉽게 스크립팅되고 일반화 될 수 있습니다. 인용문 사용에주의해야합니다.

역할 사용

또 다른 옵션은 원하는 모든 권한을 가진 역할을 수행 한 다음 필요에 따라 사용자에게 해당 역할을 부여하는 것입니다. 이에 대한 단점은 소프트웨어가 연결하는 사람들이 그 권한을 갖도록 역할을 설정해야한다는 것입니다. 한 가지 가능성은 각 사용자의 기본 역할로 선택된 역할을 설정하는 것입니다.

서버 스튜디오 Java Edition 사용

ssje 이 작업을 단순화하기위한 권한 관리 도구가 있습니다.

열린 관리자도 사용합니다

귀리 특권 관리에 도움이되는 도구가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top