Criando um novo super usuário no PostgreSQL
A administração do PostgreSQL [1] requer alguns cuidados com a segurança. Um delas é somente permitir a conexão por certos usuários e a partir de certos hosts na rede.
Bom hoje vou explicar o que eu faço para criar um novo super usuário no PostgreSQL quando faço uma nova instalação em sistemas Debian. Este procedimento normalmente é de suma importância para conseguimos conectar remotamente com o banco uma vez que por medidas de segurança alguns gerenciadores do PostgreSQL, como o PHPPgAdmin [2], não permitem a conexão com o super usuário padrão (postgres).
Primeiramente devemos instalar o pacote do PostgreSQL:
root@srv:~# aptitude install postgresql-8.1
Depois assumimos o super usuário padrão do PostgreSQL, para criarmos um novo super usuário:
[root@srv:~] # su - postgres [postgres@srv:~] $ createuser -P
Digite o nome da role a ser adicionada: pgmaster
Digite a senha para a nova role:
Digite-a novamente:
A nova role poderá criar um super-usuário? (s/n) s CREATE ROLE
Podemos testar a criação do usuário da seguinte forma:
[postgres@srv:~] $ psql postgres=# \du Lista de roles Nome da role | Super-usuário | Cria role | Cria BD | Conexões | Membro de --------------+---------------+-----------+---------+-----------+----------- pgmaster | sim | sim | sim | ilimitado | postgres | sim | sim | sim | ilimitado | (2 registros) postgres=# \q
Para liberar o acesso ao novo usuário basta incluir no arquivo /etc/postgresql/8.1/main/pg_hba.conf a seguinte linha: "local all pgmaster md5", isso já garante o acesso local, para outros tipos de acesso basta editar o arquivo da forma desejada.
Para um teste final recarregamos o servidor do PostgreSQL e conectamos com o novo usuário:
[root@srv /etc/init.d]# ./postgresql-8.1 force-reload
[root@srv /etc/init.d]# psql -U pgmaster template1
Senha para usuário pgmaster:
Agora uma pequena dica para quem precisa utilizar muito o PostgreSQL no bash, seja no prompt ou em algum shell-script e não querer ficar passando parâmetros de usuário e digitando a senha toda hora. Neste caso é só definir estes valores nas variáveis de ambiente especiais para o PostgreSQL, PGUSER e PGPASSWORD, use desta forma:
export PGPASSWORD=senha export PGUSER=senha
É isso, espero que ajude alguém!
