Resumo de uso do PostgreSQL
apt-get update
apt-get install postgresql postgresql-doc postgresql-9.5-slony1 postgresql-9.5-postgis
sudo su
su - postgresql
psql
Permitir Acesso somente Local
Para permitir que aplicativos e sites criados com o PHP tenham acesso através de uma conexão onde usam 'host=localhost', ou seja, local, devemos executar como root.
Criar bancos
Criar usuários com direitos somente ao banco
Cada site deve ter um usuário exclusivo e um banco onde tem plenos poderes.
CRIAR MAIS DOIS USUÁRIOS
Criar usuários que não podem criar usuários, bancos nem roles
su - postgres
createuser ribafs
createuser joao
Alterar a senha dentro do SGBD
psql
ALTER USER postgres WITH PASSWORD 'senha';
\q para sair
cp /etc/postgresql/9.1/main/postgresql.conf /etc/postgresql/9.1/main/postgresql.confCOP
nano /etc/postgresql/9.1/main/postgresql.conf
listen_addresses = '*' (Escutar todas os IPs. Controlar no pg_hba.conf)
Neste arquivo (pg_hba.conf) você consegue restringir o acesso ao seu banco de dados por IP, por usuário, por tipo de senha, etc.
cp /etc/postgresql/9.1/main/pg_hba.conf /etc/postgresql/9.1/main/pg_hba.confCOP
nano /etc/postgresql/9.1/main/pg_hba.conf
Liberar o IP do sysadmin (10.40.0.103)
# Database administrative login by UNIX sockets
local all postgres ident (Usuário postgres usa a mesma senha do SO)
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all ident
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 10.40.0.133/32 md5
Toda uma rede:
host all all 10.0.0.0/24 md5
exit
/etc/init.d/postgresql restart
Para não atribuir senha para o postgres, usando somente através do root podemos usar:
su postgres -c psql postgres
Alguns scripts em
/usr/share/postgresql/8.4/
Uso Remoto do PostgreSQL
Acesso remoto do IP 192.168.1.67
No postgresql.conf listen_addresses deve estar com '*'
Alterar o pg_hba.conf na linha do IP para trust
host all all 192.168.1.67/32 md5
Para toda a rede:
host all all 192.168.1.0/24 md5
Restartar
/etc/init.d/postgresql restart
Acessar com:
psql -h IP -U usuario -d banco
ou
psql -h IP -U usuario
Listar bancos remotamente
psql -l -h 192.168.1.12 -U postgres
Ajuda
psql --help
Backup local e restore remoto
pg_dump banco | psql -h hostname banco -U postgres
pg_restore apoena -f
Máscara Explicada
Apenas para iluminar um pouco, aquele número que vem depois da barra "/"
significa o número de bits que ele vai utilizar na mascara. Vejamos.
Suponha que voce deixe 189.0.0.0/24, o que vai acontecer?
1) Voce vai tentar conectar no IP do seu servidor a partir de seu IP de
origem IP
2) Seu servidor vai pegar o seu IP de origem e fazer um calculo de
mascara usando 24 bits, numa comparação XOR bit-a-bit que vai resultar
em 189.22.33.0
3) Ele vai pegar o resultado do calculo acima e comparar com seu arquivo
e vai identificar que 189.22.33.0 NÃO É IGUAL A 189.0.0.0.
Portanto você tem que utilizar 189.0.0.0/8, pois assim ele vai pegar o
seu IP IP, vai fazer uma comparacao XOR bit-a-bit e vai ter
como resultado 189.0.0.0, com esse resultado ele vai comprar com o
189.0.0.0 e vai reconhecer a IGUALDADE entre eles e vai aceitar.
Em resumo.
IP/8 => IP/255.0.0.0 = 192.0.0.0
IP/16 => IP/255.255.0.0 = 192.168.0.0
IP/24 => IP/255.255.255.0 = 192.168.1.0
IP/32 => IP/255.255.255.255 = 192.168.1.12
Outras mascaras são possíveis através de deslocamento de bit do parte da
rede para o host, obtendo-se sub-redes, mas ai ja acabamos fungindo do
escopo da lista.
--
Dickson S. Guedes
Criar Usuários com privilégios Restritos
Permitir Acesso somente Local
Para permitir que aplicativos e sites criados com o PHP tenham acesso através de uma conexão onde usam 'host=localhost', ou seja, local, devemos executar como root.
Neste arquivo (pg_hba.conf) você consegue restringir o acesso ao seu banco de dados por IP, por usuário, por tipo de senha, etc.
cp /etc/postgresql/8.4/main/pg_hba.conf /etc/postgresql/8.4/main/pg_hba.confCOP
nano /etc/postgresql/8.4/main/pg_hba.conf
Liberar o IP do servidor WEB (10.10.0.102) e do servidor de Email (10.10.0.103)
# Database administrative login by UNIX sockets
local all postgres ident (Usuário postgres usa a mesma senha do SO)
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all ident
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 10.10.0.102/32 md5
#host all all 10.10.0.103/32 md5
Toda uma rede:
host all all 10.0.0.0/24 md5
exit
/etc/init.d/postgresql restart
Comments fornecido por CComment