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