Como fazer backup e/ou transferência das contas de usuários

Este artigo foi pensado mais em transferir as contas de usuários ativos num servidor para uma estação de trabalho, no entanto, o mesmo principio de aplica a um backup das contas de usuários. Por que fazer?

Com as contas de usuários em nossa estação de trabalho podemos alterar todas as senhas reais deles para digamos, masterkey e trabalhar com elas e testar ambientes reais de permissão em tabelas, triggers, procedures e qualquer outro objeto que tenhamos de dar GRANT. Além disso, podemos ter o backup das contas, apenas para casos de sinistro e precisar recuperá-la novamente.

Um outro cenário real é quando estamos migrando de versão, por exemplo, do FirebirdSQL3 para FirebirdSQL4. Nosso exemplo a seguir será baseado neste cenário.

BACKUP DAS CONTAS DE USUÁRIOS EM PRODUÇÃO

Para executar o backup de “security3.fdb” você precisa estar usando a conta de administrador e abrir o terminal com ele, daí sim poderá ter acesso a pasta do FirebirdSQL que é protegida por permissões administrativas e então executar:

set path=%path%;"C:\Program Files\Firebird\Firebird_3_0"
gbak -v -b -t -user sysdba "C:\Program Files\Firebird\Firebird_3_0\security3.fdb" c:\temp\security3.fbk

No exemplo acima, fizemos o backup. Se este é o seu objetivo, agora apenas guarde o arquivo “c:\temp\security3.fbk” num local seguro. Note no exemplo acima que não usamos o parametro -password SENHAPRODUCAO do gbak, porque não? Não é necessário porque o acesso neste caso é embarcado.

RESTAURANDO O BACKUP DAS CONTAS DE USUÁRIOS

Seja para qualquer um dos cenários que mencionei no inicio, para restaurar a base de dados vamos precisar do gbak da versão desejada e obviamente do arquivo de backup:

set path=%path%;"C:\Program Files\Firebird\Firebird_3_0"
cd "C:\Program Files\Firebird\Firebird_3_0"
ren security3.fdb security3.fdb.ori
gbak -v -r -user sysdba c:\temp\security3.fbk "C:\Program Files\Firebird\Firebird_3_0\security3.fdb"

Backup das contas de usuários foi restaurada!

IMPORTANTE: Se estiver trazendo as contas dos usuários de produção para o ambiente de desenvolvimento você precisará alterar a senha do SYSDBA por razões de segurança, imagine a catastrofe que seria você adentrar a base de produção achando que está entrando na base de desenvolvimento.

ALTERAANDO A SENHA DO SYSDBA

A partir de agora, você restaurou as contas dos usuários, mas deseja alterar a senha do SYSDBA, como fazer? É simples, primeiro precisaremos nos conectar a base security3.fdb:

set path=%path%;"C:\Program Files\Firebird\Firebird_3_0"
isql.exe -user SYSDBA "C:\Program Files\Firebird\Firebird_3_0\security3.fdb"

Depois executaremos essa sucessão de comandos alterando não apenas a senha do usuário SYSDBA, mas caso esteja em ambiente de desenvolvimento, também a sua e dos usuários que deseja simular uma ação dentro do banco de dados:

alter user SYSDBA password 'masterkey';
-- altere outras senhas se preferir, por exemplo, equipe de desenvolvimento:
-- afinal, não é bom que a equipe de desenvolvimento tenham as mesmas senhas
-- em produção e também desenvolvimento:
alter user MINHACONTA password 'masterkey';
alter user DEV_USER1 password 'masterkey';
alter user DEV_USER2 password 'masterkey';
commit;
quit;

RESTAURANDO O BACKUP DAS CONTAS NO FIREBIRD 4

O procedimento de restauração é basicamente o mesmo, o que difere é o diretório do FB4 que é diferente do FB3:

set path=%path%;"C:\Program Files\Firebird\Firebird_4_0"
cd "C:\Program Files\Firebird\Firebird_4_0"
ren security4.fdb security4.fdb.ori
gbak -v -r -user sysdba c:\temp\security3.fbk "C:\Program Files\Firebird\Firebird_4_0\security4.fdb"

O principio acima servirá para qualquer upgrade de banco de dados.

BOAS PRÁTICAS COM BACKUP/RESTORE

É imprescindível que NUNCA misture as senhas de desenvolvimento com as senhas de produção seja num banco ou no outro. Quando é necessário trazer uma base para o ambiente de desenvolvimento, a primeira coisa a se fazer é trocar as senhas contidas ali.

Não use a opção -rep para restaurar um backup por cima do banco de dados existente, seja cauteloso, faça como eu mostrei acima, renomeie o arquivo antigo para .bak e prossiga com sua restauração.

O servidor não é a “casa da Maria Joana”, pessoas inexperientes não deveriam ter acesso a conta de administrador ou a qualquer servidor de produção, então o procedimento de backup/restore deve ser executado por alguém experiente, quiçá pragmático quando a situação é fazer as coisas com cautela e destreza.