Podemos criar um banco das seguintes formas:
- linha de comando via sql;
- linha de comando via utilitário createdb. Veja a segunda parte do artigo;
- através de interface gráfica. Exemplo PgAdmin, PhpPgAdmin, entre outras. Veja a terceira parte do artigo;
Criar um banco através da linha de comando via sql
Antes de criar o banco vamos fazer a conexão com o servidor:
psql -h <nome ou ip do host> -U <nome do usuário> -d <nome do banco dados>
Exemplo
psql -h 127.0.0.1 -U postgres -d postgres
OU
psql -h 127.0.0.1 -U postgres
Parâmetros
-h: como estou executando localmente na minha máquina utilizei o ip 127.0.0.1.
Também poderia ter passado o nome localhost;
-U: nome do usuário, no meu caso postgres.
Para você criar um banco você deve ser um super usuário ou ser um usuário com o privilégio de "CREATEDB".
O usuário postgres é um super usuário. No final do artigo, mostramos como listar os privilégios dos usuários
-d: nome do banco que será conectado
Neste exemplo, nos conectamos ao banco de dados "postgres". Este banco é padrão do postgresql, pois já foi criado na instalação.
Quando o nome de usuário é igual ao do banco, como neste caso, não é necessário passar o parâmetro "-d" com o nome do banco, pois quando omitimos o nome do banco, o psql considera que é o nome do banco é igual ao nome do usuário;
Após ter se conectado com o servidor, você pode criar o banco executando a sentença sql conforme o exemplo a seguir:
SINTAXE
CREATE DATABASE nome_do_banco;
Exemplo
Vamos criar um banco de chamado db_livraria
CREATE DATABASE
db_livraria;
Veja a imagem abaixo da criação do banco de dados db_livraria:
Agora que já criamos o banco, como vamos acessá-lo?
Para acessarmos um banco utilizamos o comando psql "\c".
No caso de "db_livraria", ficará ;
Agora vamos listar todos os bancos do postgresql para verificar com quais parâmetros eles são criados, utilize o comando psql "\l", conforme exibido na imagem abaixo:
Ao observar o banco db_livraria, percebemos que alguns parâmetros foram incluídos por padrão como o proprietário do banco, a codificação "UTF-8" entre outros.
Estas configurações foram baseadas no banco de dados "template1". O template1 é um modelo para a criação de outros bancos de dados. Ele é criado na instalação do postgresql. Em outros artigos, falaremos mais sobre o template1.
Porém caso tenhamos necessidade, podemos passar os parâmetros na criação de um banco. Aqui descrevemos dois deles: "OWNER" e "CONNECTION LIMIT". Para consultar todos os parâmetros, verifique o manual do postgresql.
CREATE DATABASE nome_do_banco
WITH
OWNER = <Nome do usuário proprietário do banco>
CONNECTION LIMIT = <número máximo de conexões do banco.>
Após o parâmetro OWNER colocamos o nome do usuário que será proprietário do novo banco, caso você não utilize este parâmetro, o usuário que está executando o comando será o proprietário do banco.
Exemplo do parâmetro OWNER
Vamos criar um banco chamado db_financeiro. A proprietária deste banco será a Ana.
O nome de usuário da Ana vai ser: ana.
Solução
Antes de criarmos o banco, vamos criar a usuária ana, caso ela não exista.
CREATE ROLE ana LOGIN PASSWORD 'cs486338#';
Após executarmos a sentença acima, criamos a usuária ana. Agora vamos criar o banco db_financeiro.
CREATE DATABASE db_financeiro
WITH
OWNER = ana;
Observações
Após o WITH passamos os parâmetros que queremos utilizar no banco. Porém o uso do WITH é opcional, ou seja também é possível passar os parâmetros sem utilizá-lo na sentença:
O sinal de '=' também é opcional.
A sentença também pode ser escrita desta forma.
CREATE DATABASE db_financeiro OWNER ana;
Para acessarmos o banco "db_financeiro" utilize o comando psql:
CONNECTION LIMIT: número conexões podem ser feitas simultaneamente (ao mesmo tempo) em um banco. Caso você não passe este parâmetro não haverá limite de conexões, ou seja por padrão o valor deste parâmetro será -1.
Exemplo do parâmetro CONNECTION LIMIT
Criar um banco chamado db_escola. Serão permitidos, no máximo, duas conexões e a proprietária será a ana.
CREATE DATABASE db_escola
WITH
CONNECTION LIMIT = 2
OWNER = ana;
Após a criação do banco, vamos sair da conexão com o usuário postgres, para isso vamos utilizar o comando psql "\q".
Agora vamos nos conectar com a usuária ana.
Quando a usuária ana tentar fazer a terceira conexão, haverá um erro devido ao limite de 2 conexões. Veja a imagem abaixo.
Como prometemos no início do artigo, vamos mostrar como verificar os privilégio de usuário. Para isso, vamos utilizar o comando psql "\du".
Faça um comentário no final do artigo, suas sugestões ou críticas serão bem-vindas.
Veja a imagem abaixo da criação do banco de dados db_livraria:
Agora que já criamos o banco, como vamos acessá-lo?
Para acessarmos um banco utilizamos o comando psql "\c".
\c <nome do banco>
No caso de "db_livraria", ficará ;
\c db_livraria
Agora vamos listar todos os bancos do postgresql para verificar com quais parâmetros eles são criados, utilize o comando psql "\l", conforme exibido na imagem abaixo:
Ao observar o banco db_livraria, percebemos que alguns parâmetros foram incluídos por padrão como o proprietário do banco, a codificação "UTF-8" entre outros.
Estas configurações foram baseadas no banco de dados "template1". O template1 é um modelo para a criação de outros bancos de dados. Ele é criado na instalação do postgresql. Em outros artigos, falaremos mais sobre o template1.
Porém caso tenhamos necessidade, podemos passar os parâmetros na criação de um banco. Aqui descrevemos dois deles: "OWNER" e "CONNECTION LIMIT". Para consultar todos os parâmetros, verifique o manual do postgresql.
CREATE DATABASE nome_do_banco
WITH
OWNER = <Nome do usuário proprietário do banco>
CONNECTION LIMIT = <número máximo de conexões do banco.>
PARÂMETRO OWNER
Após o parâmetro OWNER colocamos o nome do usuário que será proprietário do novo banco, caso você não utilize este parâmetro, o usuário que está executando o comando será o proprietário do banco.
Exemplo do parâmetro OWNER
Vamos criar um banco chamado db_financeiro. A proprietária deste banco será a Ana.
O nome de usuário da Ana vai ser: ana.
Solução
Antes de criarmos o banco, vamos criar a usuária ana, caso ela não exista.
CREATE ROLE ana LOGIN PASSWORD 'cs486338#';
Após executarmos a sentença acima, criamos a usuária ana. Agora vamos criar o banco db_financeiro.
CREATE DATABASE db_financeiro
WITH
OWNER = ana;
Observações
Após o WITH passamos os parâmetros que queremos utilizar no banco. Porém o uso do WITH é opcional, ou seja também é possível passar os parâmetros sem utilizá-lo na sentença:
O sinal de '=' também é opcional.
A sentença também pode ser escrita desta forma.
CREATE DATABASE db_financeiro OWNER ana;
Para acessarmos o banco "db_financeiro" utilize o comando psql:
\c db_financeiro
PARÂMETRO CONNECTION LIMIT
CONNECTION LIMIT: número conexões podem ser feitas simultaneamente (ao mesmo tempo) em um banco. Caso você não passe este parâmetro não haverá limite de conexões, ou seja por padrão o valor deste parâmetro será -1.
Exemplo do parâmetro CONNECTION LIMIT
Criar um banco chamado db_escola. Serão permitidos, no máximo, duas conexões e a proprietária será a ana.
CREATE DATABASE db_escola
WITH
CONNECTION LIMIT = 2
OWNER = ana;
Após a criação do banco, vamos sair da conexão com o usuário postgres, para isso vamos utilizar o comando psql "\q".
Agora vamos nos conectar com a usuária ana.
Quando a usuária ana tentar fazer a terceira conexão, haverá um erro devido ao limite de 2 conexões. Veja a imagem abaixo.
Observações
Caso você queira aumentar o limite de conexões do banco "db_escola" para 10 execute a sentença abaixo, na 1ª ou na 2ª conexão:
ALTER DATABASE db_escola CONNECTION LIMIT 10;
Importante: se você precisar limitar o número de conexões no servidor postgresql e não em um banco em específico, você deve alterar a diretiva "max_connections" no arquivo "postgresql.conf" e reiniciar o serviço, mas isso é assunto para um próximo post.
Verificar os privilégios de usuários
Como prometemos no início do artigo, vamos mostrar como verificar os privilégio de usuário. Para isso, vamos utilizar o comando psql "\du".
O resultado da execução deste comando é exibido na imagem a seguir:
Como podemos ver na imagem acima, os usuários carlos, caio e postgres terão privilégio
para criar banco de dados, pois os dois primeiros tem a permissão de CREATEDB e o
último tem a permissão de super-usuário.
para criar banco de dados, pois os dois primeiros tem a permissão de CREATEDB e o
último tem a permissão de super-usuário.
A ana não terá permissão para criar novos bancos de dados.
Veja também:
PostgreSql - Criar um banco de dados parte III
PostgreSql - Criar tabela primeira parte
Postgresql - Criar tabela segunda parte
PostgreSql - Criar tabela primeira parte
Postgresql - Criar tabela segunda parte
Faça um comentário no final do artigo, suas sugestões ou críticas serão bem-vindas.
Obrigado pelo tutorial
ResponderExcluireu estou fazendo um controle do postgres pelo vba excel
de inicio eu sofri para fazer o vba se conectar ao postgres, mas apos conseguir a conexão o seu tutorial me ajudou bastante a complementar meu código
Eduardo