¿Cómo configurar postgresql por primera vez?
Acabo de instalar postgresql y especifiqué la contraseña x durante la instalación. Cuando intento hacer createdb
y especificar cualquier contraseña, aparece el mensaje:
createb: no se pudo conectar a la base de datos postgres: FATAL: la autenticación de contraseña falló para el usuario
Igual por createuser
.
¿Cómo debería empezar? ¿Puedo agregarme como usuario a la base de datos?
Las otras respuestas no me satisficieron del todo. 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 plantilla psql1 de postgres
Establezca la contraseña para el usuario postgres, luego salga de psql (Ctrl-D):
ALTERAR USUARIO 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 los
parespostgres md5Para saber qué versión de PostgreSQL está ejecutando, busque la carpeta de la versión en
/etc/postgresql
. Además, puedes 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
).Crea un usuario que tenga el mismo nombre que tú (para encontrarlo, puedes 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, que sea un superusuario y que tenga una contraseña cifrada. Los realmente importantes son -P -E, para que se le solicite que escriba la contraseña que se cifrará, y -d para que pueda realizar un archivo
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
archivo (consulte el paso 3 anterior) y cambie "peer" a "md5" en la línea relativa a "todos" los demás usuarios:local todos todos
paresmd5Reinicie (como en el paso 4) y verifique que pueda iniciar sesión sin -U postgres:
plantilla psql1
Tenga en cuenta que si hace simplemente
psql
, fallará ya que intentará conectarse 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.
Hay dos métodos que puedes utilizar. Ambos requieren la creación de un usuario y una base de datos.
Usando createuser y creadob ,
$ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase
Usar los comandos de administración de SQL y conectarse 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
postgres
usuario,SHOW port;
O,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Nota al margen: el postgres
usuario
Sugiero NO modificar 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 debes tener root para poder autenticarte comopostgres
. - Normalmente no está protegido con contraseña y delega en el sistema operativo host. Ésto es una cosa buena . Esto normalmente significa que para iniciar sesión como
postgres
PostgreSQL equivalente a SQL ServerSA
, 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.
Esta es mi solución:
su root
su postgres
psql