Informix, 모든 테이블을 선택하십시오
-
22-07-2019 - |
문제
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 이 작업을 단순화하기위한 권한 관리 도구가 있습니다.
열린 관리자도 사용합니다
귀리 특권 관리에 도움이되는 도구가 있습니다.