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.