Las otras respuestas no fueron del todo satisfactorias para mí. Esto es lo que funcionó para postgresql-9.1 en Xubuntu 12.04.1 LTS.
-
Conéctese a la base de datos predeterminada con el usuario postgres:
sudo -u postgres psql template1
-
Establezca la contraseña para el usuario postgres, luego salga de psql (Ctrl-D):
ALTER USER postgres con contraseña cifrada 'xxxxxxx';
-
Edite el
pg_hba.conf
archivo:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
y cambie "peer" a "md5" en la línea relativa a postgres:
local todos postgres
compañeromd5Para saber qué versión de postgresql está ejecutando, busque la carpeta de la versión en
/etc/postgresql
. Además, puede usar Nano u otro editor en lugar de VIM. -
Reinicie la base de datos:
sudo /etc/init.d/postgresql reiniciar
(Aquí puedes comprobar si funcionó con
psql -U postgres
). -
Cree un usuario que tenga el mismo nombre que usted (para encontrarlo, puede escribir
whoami
):sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Las opciones le dicen a postgresql que cree un usuario que pueda iniciar sesión, crear bases de datos, crear nuevos roles, es un superusuario y tendrá una contraseña cifrada. Los realmente importantes son -P -E, para que se le pida que escriba la contraseña que se cifrará, y -d para que pueda hacer un
createdb
.Cuidado con las contraseñas :primero te pedirá dos veces la nueva contraseña (para el nuevo usuario), repetida, y luego una vez la contraseña de postgres (la especificada en el paso 2).
-
Nuevamente, edite el
pg_hba.conf
(consulte el paso 3 anterior) y cambie "peer" a "md5" en la línea relativa a "todos" los demás usuarios:local todos todos
compañeromd5 -
Reinicie (como en el paso 4) y compruebe que puede iniciar sesión sin -U postgres:
plantilla psql1
Tenga en cuenta que si hace un mero
psql
, fallará ya que intentará conectarlo a una base de datos predeterminada que tenga el mismo nombre que usted (es decir,whoami
). template1 es la base de datos de administración que está aquí desde el principio. -
Ahora
createdb <dbname>
debería funcionar.
En Linux, PostgresQL generalmente está configurado para permitir que el usuario raíz inicie sesión como el superusuario de Postgres postgres
desde el shell (consola o ssh).
$ psql -U postgres
Luego simplemente crearía una nueva base de datos como de costumbre:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
Esto debería funcionar sin tocar pg_hba.conf
. Si desea poder hacer esto usando alguna herramienta GUI a través de la red, entonces deberá meterse con pg_hba.conf
.
Hay dos métodos que puede utilizar. Ambos requieren la creación de un usuario y una base de datos.
-
Uso de createuser y createdb ,
$ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase
-
Uso de los comandos de administración de SQL y conexión con una contraseña a través de TCP
$ sudo -u postgres psql postgres
Y, luego, en el shell psql
CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser;
Entonces puedes iniciar sesión,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Si no conoce el puerto, siempre puede obtenerlo ejecutando lo siguiente, como el
postgres
usuario,SHOW port;
O,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Nota al margen:el postgres
usuario
Sugiero NO modificando el postgres
usuario.
- Normalmente está bloqueado desde el sistema operativo. Se supone que nadie debe "iniciar sesión" en el sistema operativo como
postgres
. Se supone que tienes que ser root para poder autenticarte comopostgres
. - Normalmente no está protegido por contraseña y se delega al sistema operativo host. Esto es algo bueno . Esto normalmente significa iniciar sesión como
postgres
que es el equivalente de PostgreSQL delSA
de SQL Server , debe tener acceso de escritura a los archivos de datos subyacentes. Y eso significa que normalmente podrías causar estragos de todos modos. - Al mantener esto deshabilitado, elimina el riesgo de un ataque de fuerza bruta a través de un superusuario designado. Ocultar y oscurecer el nombre del superusuario tiene ventajas.