Como criar usuário para um banco de dados no postgresql? [fechadas]

199

Instalei o PostgreSQL 8.4 no meu servidor CentOS e conectei o usuário root a partir do shell e acessando o shell do PostgreSQL.

Criei o banco de dados e o usuário no PostgreSQL.

Ao tentar conectar-me a partir do meu script PHP, ele mostra que a autenticação falhou.

Como crio um novo usuário e como conceder permissões a eles para um banco de dados específico?

do utilizador
fonte
o que exatamente é a mensagem de erro? você pode fazer login através psqlda linha de comando?
a_horse_with_no_name
25
Como no mundo isso foi fechado como fora de tópico?
precisa saber é o seguinte
@BenCreasy talvez porque seja mais apropriado para serverfault.com ou superusuário?
knocte
2
@knocte, então suponho que você esteja dizendo que se enquadra em 6, com exceção "a menos que envolvam diretamente ferramentas de programação ou programação", e suponho que o postgres não conte como ferramenta de programação? tomada interessante
Ben Creasy

Respostas:

339

Da CLI:

$ su - postgres 
$ psql template1
template1=# CREATE USER tester WITH PASSWORD 'test_password';
template1=# GRANT ALL PRIVILEGES ON DATABASE "test_database" to tester;
template1=# \q

PHP (como testado no localhost, funciona conforme o esperado):

  $connString = 'port=5432 dbname=test_database user=tester password=test_password';
  $connHandler = pg_connect($connString);
  echo 'Connected to '.pg_dbname($connHandler);
Vidul
fonte
14
Para o Ubuntu deve sersudo su - postgres
Hengjie
57
Para o Ubuntu ele realmente deve ser: sudo -u postgres psql
Mario
2
Eu acho que a maneira mais portátil de emitir os comandos seria:psql -U postgres -c "CREATE ROLE..."
Hugo Mota
31
Lembre-se de que todas as coisas que você digita e executa no shell geralmente acabam no histórico do shell, incluindo a senha escolhida.
amn
7
observe a diferença entre 'e "nos comandos!
andilabs
42

Crie o usuário com uma senha:

http://www.postgresql.org/docs/current/static/sql-createuser.html

CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

Em seguida, conceda direitos ao usuário em um banco de dados específico:

http://www.postgresql.org/docs/current/static/sql-grant.html

Exemplo:

grant all privileges on database db_name to someuser;
Denys Séguret
fonte
1
Eu já fiz isso: crie o usuário ravi com a senha 'ravi'; conceder todos os privilégios no banco de dados nominatim para ravi; Mas não consigo conectar-me ao seguinte código PHP: <? Php $ connString = 'host = porta localhost = 5432 dbname = nominatim usuário = ravi senha = ravi'; $ connHandler = pg_connect ($ connString); echo 'Conectado a' .pg_dbname ($ connHandler); ?>
@ Darji Krunal: qual é o erro do PHP, como ele se parece?
Vidul
1
conceda todos os privilégios * ...
Arpit Singh