Esta página foi traduzida por máquina. Leia o original em inglês. English

Extensão da Linguagem SQL: CREATE/ALTER/CREATE_OR_ALTER/DROP USER

Implementa a capacidade de gerenciar usuários a partir de uma conexão regular com o banco de dados.

Autor:

Alex Peshkoff [email protected]

A sintaxe é:

CREATE USER nome [ opções ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER USER nome [ SET ] [ opções ] [ TAGS ( tag [, tag [, tag ...]] ) ] ALTER CURRENT USER [ SET ] [ opções ] [ TAGS ( tag [, tag [, tag ...]] ) ] CREATE OR ALTER USER nome [ SET ] [ opções ] [ TAGS ( tag [, tag [, tag ...]] ) ] DROP USER nome [ USING PLUGIN nome ];

onde OPÇÕES é uma lista das seguintes opções:

- PASSWORD ‘senha’

- FIRSTNAME ‘primeiro_nome’

- MIDDLENAME ’nome_do_meio'

- LASTNAME ‘sobrenome’

- ACTIVE

- INACTIVE

- USING PLUGIN nome

e cada TAG pode ter uma das duas formas:

nome = ‘valor_de_string’

ou:

DROP nome

onde NOME é qualquer identificador SQL válido.

Descrição:

Torna possível adicionar, modificar e excluir usuários no banco de dados de segurança usando a linguagem SQL.

O Firebird desde a versão 3.0 suporta múltiplos bancos de dados de segurança. O utilitário gsec e a API de serviços

não suportam isso e o uso deles para gerenciar usuários está obsoleto.

As cláusulas CREATE e DROP estão disponíveis apenas para SYSDBA (ou outro usuário, com o papel RDB$ADMIN concedido no banco de dados de segurança). Um usuário comum pode ALTERAR sua própria senha, nomes completos e tags. A tentativa de modificar

outro usuário falhará. Também falhará a tentativa de tornar a si mesmo inativo ou ativo. Para evitar digitar seu nome toda vez, existe a forma simplificada ALTER CURRENT USER.

Pelo menos uma das opções PASSWORD, FIRSTNAME, MIDDLENAME, LASTNAME, ACTIVE, INACTIVE ou TAGS deve estar presente na instrução ALTER USER. Observe também que a cláusula PASSWORD é obrigatória ao criar um novo usuário.

A cláusula PASSWORD é bastante autoexplicativa. As cláusulas FIRSTNAME, MIDDLENAME e LASTNAME também, mas podem ser usadas para armazenar qualquer informação curta sobre um usuário. As cláusulas INACTIVE/ACTIVE são usadas para desabilitar o login do usuário no servidor sem removê-lo da lista e para restaurar essa capacidade. A cláusula USING PLUGIN torna possível trabalhar com usuários não apenas com o plugin de gerenciamento padrão (o primeiro listado no parâmetro UserManager no firebird.conf), mas também com outros. O utilitário gsec e a API de serviços não suportam múltiplos plugins de gerenciamento de usuários - o padrão é sempre usado.

TAGS é uma lista de atributos definidos pelo usuário final. O comprimento do valor não deve exceder 255 bytes.

Atribuir um valor a um nome define uma nova tag ou modifica uma existente. Para remover a tag, use a opção DROP.

Definir uma lista de tags para o usuário mantém as tags definidas anteriormente se elas não forem mencionadas no momento.

Observação - UID/GID, inseridos pelo gsec obsoleto, são tratados como tags na interface SQL.

Para acessar a lista de usuários, selecione das tabelas virtuais SEC$USERS e SEC$USER_ATTRIBUTES.

Exemplos (suponha UserManager=Srp,Legacy_UserManager no firebird.conf):

Genérico:

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;

Trabalhando com tags:

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

Exibindo a lista de usuários:

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)) "VALOR", 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 VALOR PLUGIN

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

Atenção!

Este recurso depende fortemente do plugin de gerenciamento de usuários. Leve em consideração que algumas opções são ignoradas ao usar o plugin de gerenciamento de usuários legado.