Respuestas:
Para contraseña menos inicio de sesión:
sudo -u user_name psql db_name
Para restablecer la contraseña si ha olvidado:
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
... por alguna razón google me estaba apuntando aquí cuando yo estaba buscando en Google que :)
Luego escriba:
$ sudo -u postgres psql
Entonces:
\password postgres
Luego para dejar de fumar psql
:
\q
Si eso no funciona, reconfigure la autenticación.
Editar /etc/postgresql/9.1/main/pg_hba.conf
(la ruta será diferente) y cambiar:
local all all peer
a:
local all all md5
Luego reinicie el servidor:
$ sudo service postgresql restart
\p
, me da la contraseña; si \password postgres
\p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
Puede y debe tener la contraseña de los usuarios cifrada:
ALTER USER username WITH ENCRYPTED PASSWORD 'password';
The password is always stored encrypted in the system catalogs. The ENCRYPTED keyword has no effect, but is accepted for backwards compatibility.
Creo que la mejor manera de cambiar la contraseña es simplemente usar:
\password
en la consola de Postgres.
Fuente:
Se debe tener precaución al especificar una contraseña sin cifrar con este comando. La contraseña se transmitirá al servidor en texto sin cifrar y también puede registrarse en el historial de comandos del cliente o en el registro del servidor. psql contiene un comando \ contraseña que se puede usar para cambiar la contraseña de un rol sin exponer la contraseña de texto sin cifrar.
de https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
\password username
Para cambiar la contraseña usando la línea de comando de Linux, use:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Para cambiar la contraseña
sudo -u postgres psql
entonces
\password postgres
ahora ingrese Nueva Contraseña y Confirme
luego \q
para salir
Vaya a su configuración de Postgresql y edite pg_hba.conf
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Luego cambie esta línea:
Database administrative login by Unix domain socket
local all postgres md5
a :
Database administrative login by Unix domain socket
local all postgres peer
luego reinicie el servicio PostgreSQL a través del comando SUDO luego
psql -U postgres
Ahora entrará y verá el terminal Postgresql
luego ingrese
\password
e ingrese la NUEVA contraseña para el usuario predeterminado de Postgres. Después de cambiar con éxito la contraseña nuevamente, vaya a pg_hba.conf y revierta el cambio a "md5"
ahora iniciarás sesión como
psql -U postgres
con tu nueva contraseña.
Avíseme si todos encuentran algún problema en él.
user@user-NC10:~$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres"
$version,' /usr/bin/psql: psql: line 26:
my ($ version, $ cluster, $ db, $ port , $ host); ' ¡gracias por tu ayuda!
La configuración que tengo en mi servidor se personalizó mucho y logré cambiar la contraseña solo después de configurar la autenticación de confianza en el pg_hba.conf
archivo :
local all all trust
No olvides cambiar esto de nuevo a contraseña o md5
sudo systemctl restart postgresql.service
Este fue el primer resultado en google, cuando estaba buscando cómo cambiar el nombre de un usuario, entonces:
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
Un par de otros comandos útiles para la gestión de usuarios:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
Mover usuario a otro grupo
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
Para mi caso en Ubuntu 14.04 instalado con postgres 10.3. Necesito seguir los siguientes pasos.
su - postgres
para cambiar de usuario a postgres
psql
para ingresar al shell de postgres\password
luego ingrese su contraseña\q
salir de la sesión de shellLuego vuelve a la raíz ejecutando exit
y configurando su pg_hba.conf
(el mío está en /etc/postgresql/10/main/pg_hba.conf
) asegurándose de tener la siguiente línea
local all postgres md5
service postgresql restart
postgres
usuario e ingrese el shell postgres nuevamente. Te pedirá una contraseña.utilizar este:
\password
ingrese la nueva contraseña que desea para ese usuario y luego confírmela. Si no recuerda la contraseña y desea cambiarla, puede iniciar sesión como postgres y luego usar esto:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Similar a otras respuestas en sintaxis, pero se debe saber que también puede pasar un md5 de la contraseña para que no esté transmitiendo una contraseña de texto sin formato.
Aquí hay algunos escenarios de consecuencias no deseadas de alterar la contraseña de un usuario en texto plano.
log_statement = ddl
o superior, su contraseña de texto sin formato aparecerá en sus registros de errores.
Dicho esto, aquí es cómo podemos alterar la contraseña de un usuario construyendo un md5 de la contraseña.
Ej: "md5" + md5 (contraseña + nombre de usuario)
En bash:
~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
md5d6a35858d61d85e4a82ab1fb044aba9d
[PSCredential] $Credential = Get-Credential
$StringBuilder = New-Object System.Text.StringBuilder
$null = $StringBuilder.Append('md5');
[System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputeHash([System.Text.Encoding]::ASCII.GetBytes(((ConvertFrom-SecureStringToPlainText -SecureString $Credential.Password) + $Credential.UserName))) | ForEach-Object {
$null = $StringBuilder.Append($_.ToString("x2"))
}
$StringBuilder.ToString();
## OUTPUT
md5d6a35858d61d85e4a82ab1fb044aba9d
ALTER USER
comando se verá así ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
La contraseña siempre se almacena cifrada en los catálogos del sistema. La palabra clave ENCRYPTED no tiene ningún efecto, pero se acepta por compatibilidad con versiones anteriores. El método de encriptación está determinado por el parámetro de configuración contraseña_encriptación. Si la cadena de contraseña presentada ya está en formato MD5 o SCRAM, entonces se almacena tal cual, independientemente de la contraseña_encriptación (ya que el sistema no puede descifrar la cadena de contraseña cifrada especificada, para cifrarla en un formato diferente). Esto permite la recarga de contraseñas cifradas durante el volcado / restauración.
En general, solo use pg admin UI para hacer actividad relacionada con db.
Si, por el contrario, se centra más en automatizar la configuración de la base de datos para su desarrollo local, o CI, etc.
Por ejemplo, puede usar un combo simple como este.
(a) Cree un superusuario ficticio a través de jenkins con un comando similar a este:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
esto creará un superusuario llamado experiment001 en tu postgres db.
(b) Dele a este usuario alguna contraseña ejecutando un comando SQL NO interactivo.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres es probablemente la mejor base de datos para herramientas de línea de comandos (no interactivas). Crear usuarios, ejecutar SQL, hacer copias de seguridad de la base de datos, etc. En general, todo es bastante básico con postgres y, en general, es bastante trivial integrar esto en sus scripts de configuración de desarrollo o en la configuración automatizada de CI.
y la forma totalmente automatizada con bash y esperar ( en este ejemplo , aprovisionamos un nuevo administrador de postgres con el postgres pw recién aprovisionado tanto en el sistema operativo como en el nivel de tiempo de ejecución de postgres)
# the $postgres_usr_pw and the other bash vars MUST be defined
# for reference the manual way of doing things automated with expect bellow
#echo "copy-paste: $postgres_usr_pw"
#sudo -u postgres psql -c "\password"
# the OS password could / should be different
sudo -u root echo "postgres:$postgres_usr_pw" | sudo chpasswd
expect <<- EOF_EXPECT
set timeout -1
spawn sudo -u postgres psql -c "\\\password"
expect "Enter new password: "
send -- "$postgres_usr_pw\r"
expect "Enter it again: "
send -- "$postgres_usr_pw\r"
expect eof
EOF_EXPECT
cd /tmp/
# at this point the postgres uses the new password
sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \
--port $postgres_db_port --host $postgres_db_host -c "
DO \$\$DECLARE r record;
BEGIN
IF NOT EXISTS (
SELECT
FROM pg_catalog.pg_roles
WHERE rolname = '"$postgres_db_useradmin"') THEN
CREATE ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
CREATEDB REPLICATION BYPASSRLS
PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
END IF;
END\$\$;
ALTER ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
CREATEDB REPLICATION BYPASSRLS
PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
"
TLDR:
En muchos sistemas, la cuenta de un usuario a menudo contiene un punto o algún tipo de punción (usuario: john.smith, horise.johnson). En estos casos, se deberá realizar una modificación a la respuesta aceptada anteriormente. El cambio requiere que el nombre de usuario sea entre comillas dobles.
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
Racional:
Postgres es bastante exigente con respecto a cuándo usar una "cita doble" y cuándo usar una "cita simple". Por lo general, al proporcionar una cadena, usaría una comilla simple.