¿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?


¿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);

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;

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.