Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

SQL Language Extension: CREATE/ALTER/CREATE_OR_ALTER/DROP USER

Implementuje možnost spravovat uživatele z běžného připojení k databázi.

Autor:

Alex Peshkoff [email protected]

Syntaxe je:

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 ];

kde OPTIONS je seznam následujících možností:

- PASSWORD ‘password’

- FIRSTNAME ‘firstname’

- MIDDLENAME ‘middlename’

- LASTNAME ’lastname'

- ACTIVE

- INACTIVE

- USING PLUGIN name

a každý TAG může mít jednu ze dvou forem:

name = ‘string value’

nebo:

DROP name

kde NAME je libovolný platný SQL identifikátor.

Popis:

Umožňuje přidávat, upravovat a odstraňovat uživatele v bezpečnostní databázi pomocí jazyka SQL.

Firebird od verze 3.0 podporuje více bezpečnostních databází. Nástroj gsec a služby API

tuto funkci nepodporují a jejich použití pro správu uživatelů je zastaralé.

Klauzule CREATE a DROP jsou dostupné pouze pro SYSDBA (nebo jiného uživatele s rolí RDB$ADMIN v bezpečnostní databázi). Běžný uživatel může ALTERovat své vlastní heslo, široká jména a tagy. Pokus o úpravu

jiného uživatele selže. Také selže pokus o deaktivaci nebo aktivaci sebe sama. Aby nebylo nutné pokaždé psát své jméno, existuje zjednodušená forma ALTER CURRENT USER.

V příkazu ALTER USER musí být přítomna alespoň jedna z klauzulí PASSWORD, FIRSTNAME, MIDDLENAME, LASTNAME, ACTIVE, INACTIVE nebo TAGS. Také si všimněte, že klauzule PASSWORD je povinná při vytváření nového uživatele.

Klauzule PASSWORD je dostatečně samovysvětlující. Klauzule FIRSTNAME, MIDDLENAME a LASTNAME také, ale mohou být použity i pro uložení jakýchkoli krátkých informací o uživateli. Klauzule INACTIVE/ACTIVE se používají k zakázání přihlášení uživatele na server, aniž by byl odstraněn ze seznamu, a k obnovení této schopnosti. Klauzule USING PLUGIN umožňuje pracovat s uživateli nejen s výchozím správním pluginem (první uvedený v parametru UserManager v firebird.conf), ale také s ostatními. Nástroj gsec a služby API nepodporují více pluginů pro správu uživatelů - vždy se používá výchozí.

TAGS je seznam atributů definovaných koncovým uživatelem. Délka hodnoty by neměla přesáhnout 255 bajtů.

Přiřazení hodnoty jménu nastaví nový nebo upraví existující tag. Pro odstranění tagu použijte možnost DROP.

Nastavení seznamu tagů pro uživatele zachovává dříve nastavené tagy, pokud nejsou aktuálně zmíněny.

Poznámka - UID/GID, zadané zastaralým nástrojem gsec, jsou v SQL rozhraní považovány za tagy.

Pro přístup k seznamu uživatelů vyberte z virtuálních tabulek SEC$USERS a SEC$USER_ATTRIBUTES.

Příklady (předpokládejme UserManager=Srp,Legacy_UserManager v firebird.conf):

Obecné:

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;

Práce s tagy:

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

Zobrazení seznamu uživatelů:

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

Pozor!

Tato funkce silně závisí na pluginu pro správu uživatelů. Mějte na paměti, že některé možnosti jsou při použití staršího pluginu pro správu uživatelů ignorovány.