이 페이지는 기계 번역되었습니다. 영어 원본을 읽어보세요. English

SQL 언어 확장: CREATE/ALTER/CREATE_OR_ALTER/DROP USER

일반 데이터베이스 연결에서 사용자를 관리할 수 있는 기능을 구현합니다.

작성자:

Alex Peshkoff [email protected]

구문은 다음과 같습니다:

CREATE USER name [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER USER name [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER CURRENT USER [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] CREATE OR ALTER USER name [ SET ] [ options ] [ TAGS ( tag [, tag [, tag ...]] ) ] DROP USER name [ USING PLUGIN name ];

여기서 OPTIONS는 다음 옵션들의 목록입니다:

- PASSWORD ‘password’

- FIRSTNAME ‘firstname’

- MIDDLENAME ‘middlename’

- LASTNAME ’lastname'

- ACTIVE

- INACTIVE

- USING PLUGIN name

그리고 각 TAG는 다음 두 가지 형태 중 하나를 가질 수 있습니다:

name = ‘string value’

또는:

DROP name

여기서 NAME은 유효한 SQL 식별자입니다.

설명:

SQL 언어를 사용하여 보안 데이터베이스에서 사용자를 추가, 수정 및 삭제할 수 있게 합니다.

Firebird 3.0부터 여러 보안 데이터베이스를 지원합니다. gsec 유틸리티와 서비스 API는 이를 지원하지 않으며, 사용자 관리에 이를 사용하는 것은 더 이상 권장되지 않습니다.

CREATE 및 DROP 절은 SYSDBA(또는 보안 데이터베이스에서 RDB$ADMIN 역할이 부여된 다른 사용자)만 사용할 수 있습니다. 일반 사용자는 자신의 비밀번호, 이름 필드 및 태그만 변경할 수 있습니다. 다른 사용자를 수정하려는 시도는 실패합니다. 또한 자신을 비활성화하거나 활성화하려는 시도도 실패합니다. 매번 자신의 이름을 입력하지 않아도 되도록 간단한 형태의 ALTER CURRENT USER가 제공됩니다.

ALTER USER 문에는 PASSWORD, FIRSTNAME, MIDDLENAME, LASTNAME, ACTIVE, INACTIVE 또는 TAGS 중 하나 이상이 포함되어야 합니다. 또한 새 사용자를 생성할 때는 PASSWORD 절이 필수입니다.

PASSWORD 절은 설명이 필요 없을 정도로 명확합니다. FIRSTNAME, MIDDLENAME 및 LASTNAME 절도 마찬가지이지만, 사용자에 대한 간단한 정보를 저장하는 데 사용할 수도 있습니다. INACTIVE/ACTIVE 절은 사용자를 목록에서 제거하지 않고 서버 로그인을 비활성화하거나 해당 기능을 복원하는 데 사용됩니다. USING PLUGIN 절을 사용하면 기본 관리 플러그인(firebird.conf의 UserManager 매개변수에 먼저 나열된 플러그인)뿐만 아니라 다른 플러그인으로도 사용자를 관리할 수 있습니다. gsec 유틸리티와 서비스 API는 여러 사용자 관리 플러그인을 지원하지 않으며 항상 기본 플러그인이 사용됩니다.

TAGS는 최종 사용자가 정의한 속성 목록입니다. 값의 길이는 255바이트를 초과할 수 없습니다.

이름에 값을 할당하면 새 태그를 설정하거나 기존 태그를 수정합니다. 태그를 제거하려면 DROP 옵션을 사용하세요.

사용자에 대한 태그 목록을 설정할 때 현재 언급되지 않은 이전에 설정된 태그는 유지됩니다.

참고 - 더 이상 사용되지 않는 gsec으로 입력된 UID/GID는 SQL 인터페이스에서 태그로 처리됩니다.

사용자 목록에 접근하려면 가상 테이블 SEC$USERS 및 SEC$USER_ATTRIBUTES에서 선택하세요.

샘플 (firebird.conf에 UserManager=Srp,Legacy_UserManager가 있다고 가정):

일반적인 경우:

CREATE USER alex PASSWORD 'test'; ALTER USER alex SET FIRSTNAME 'Alex' LASTNAME 'Peshkoff'; CREATE OR ALTER USER alex SET PASSWORD 'IdQfA'; DROP USER alex; ALTER CURRENT USER SET PASSWORD 'SomethingLongEnough' USING PLUGIN srp;

태그 작업:

ALTER USER alex SET TAGS (a='a', b='b'); NAME VALUE ================ ============================== A a B b ALTER USER alex SET TAGS (b='x', c='d'); NAME VALUE ================ ============================== A a B x C d ALTER USER alex SET TAGS (drop a, c='sample'); NAME VALUE ================ ============================== B x C sample

사용자 목록 표시:

SELECT CAST(U.SEC$USER_NAME AS CHAR(20)) LOGIN, CAST(A.SEC$KEY AS CHAR(10)) TAG, CAST(A.SEC$VALUE AS CHAR(20)) "VALUE", U.SEC$PLUGIN "PLUGIN" FROM SEC$USERS U LEFT JOIN SEC$USER_ATTRIBUTES A ON U.SEC$USER_NAME = A.SEC$USER_NAME AND U.SEC$PLUGIN = A.SEC$PLUGIN;

LOGIN TAG VALUE PLUGIN

==================== ========== ==================== =============================== SYSDBA <null> <null> Srp ALEX B x Srp ALEX C sample Srp SYSDBA <null> <null> Legacy_UserManager

참고!

이 기능은 사용자 관리 플러그인에 크게 의존합니다. 레거시 사용자 관리 플러그인을 사용할 때 일부 옵션이 무시된다는 점을 유의하세요.