¿Cómo crear un usuario para un db en postgresql? [cerrado]

199

He instalado PostgreSQL 8.4 en mi servidor CentOS y me he conectado al usuario root desde el shell y accediendo al shell de PostgreSQL.

Creé la base de datos y el usuario en PostgreSQL.

Al intentar conectarme desde mi script PHP, me muestra que la autenticación falló.

¿Cómo creo un nuevo usuario y cómo otorgarles permisos para un DB en particular?

usuario
fuente
¿Cuál es exactamente el mensaje de error? ¿Puedes iniciar sesión psqldesde la línea de comandos?
a_horse_with_no_name
25
¿Cómo demonios se cerró esto fuera de tema?
Ben Creasy
¿@BenCreasy quizás porque es más apropiado para serverfault.com o superusuario?
knocte
2
@knocte, así que supongo que está diciendo que cae en 6, que tiene la excepción "a menos que impliquen directamente herramientas de programación o programación", y supongo que postgres no cuenta como una herramienta de programación. toma interesante
Ben Creasy

Respuestas:

339

De 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 (según lo probado en localhost, funciona como se esperaba):

  $connString = 'port=5432 dbname=test_database user=tester password=test_password';
  $connHandler = pg_connect($connString);
  echo 'Connected to '.pg_dbname($connHandler);
Vidul
fuente
14
Para Ubuntu debería sersudo su - postgres
Hengjie
57
Para Ubuntu realmente debería ser: sudo -u postgres psql
Mario
2
Creo que la forma más portátil de emitir los comandos sería:psql -U postgres -c "CREATE ROLE..."
Hugo Mota
31
Solo recuerde que todas las cosas que escribe y ejecuta en el shell generalmente terminan en el historial del shell, incluida la contraseña elegida.
amn
77
¡Observe la diferencia entre 'y "en los comandos!
andilabs
42

Crea al usuario con una contraseña:

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

Luego otorgue al usuario derechos sobre una base de datos específica:

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

Ejemplo:

grant all privileges on database db_name to someuser;
Denys Séguret
fuente
1
Ya he hecho esto: crear usuario ravi con contraseña 'ravi'; otorgar todos los privilegios en la nominación de la base de datos a ravi; Pero no puedo conectarme con el siguiente código PHP: <? Php $ connString = 'host = localhost port = 5432 dbname = nominatim user = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo 'Conectado a' .pg_dbname ($ connHandler); ?>
@Darji Krunal: ¿cuál es el error de PHP, cómo se ve?
Vidul
1
conceder todos los privilegios * ...
Arpit Singh