Antworten:
Für passwortloses Login:
sudo -u user_name psql db_name
So setzen Sie das Passwort zurück, wenn Sie es vergessen haben:
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
... tut ... aus irgendeinem Grund hat mich Google hier gezeigt, als ich das gegoogelt habe :)
Geben Sie dann Folgendes ein:
$ sudo -u postgres psql
Dann:
\password postgres
Dann zu beenden psql
:
\q
Wenn dies nicht funktioniert, konfigurieren Sie die Authentifizierung neu.
Bearbeiten /etc/postgresql/9.1/main/pg_hba.conf
(Pfad unterscheidet sich) und ändern:
local all all peer
zu:
local all all md5
Starten Sie dann den Server neu:
$ sudo service postgresql restart
\p
, gibt es mir das Passwort; Wenn ich \password postgres
es \p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
Sie können und sollten das Kennwort des Benutzers verschlüsseln lassen:
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.
Ich glaube, der beste Weg, um das Passwort zu ändern, ist einfach zu verwenden:
\password
in der Postgres-Konsole.
Quelle:
Bei der Angabe eines unverschlüsselten Passworts mit diesem Befehl ist Vorsicht geboten. Das Kennwort wird im Klartext an den Server übertragen und möglicherweise auch im Befehlsverlauf des Clients oder im Serverprotokoll protokolliert. psql enthält einen Befehl \ password, mit dem das Kennwort einer Rolle geändert werden kann, ohne das Klartextkennwort offenzulegen.
von https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
\password username
Verwenden Sie Folgendes, um das Kennwort über die Linux-Befehlszeile zu ändern:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Passwort ändern
sudo -u postgres psql
dann
\password postgres
Geben Sie nun Neues Passwort ein und bestätigen Sie
dann \q
zu beenden
Gehen Sie zu Ihrer Postgresql-Konfiguration und bearbeiten Sie pg_hba.conf
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Dann ändern Sie diese Zeile:
Database administrative login by Unix domain socket
local all postgres md5
zu:
Database administrative login by Unix domain socket
local all postgres peer
Starten Sie dann den PostgreSQL-Dienst über den Befehl SUDO neu
psql -U postgres
Sie werden nun eingegeben und sehen das Postgresql-Terminal
dann eingeben
\password
und geben Sie das NEUE Passwort für den Standardbenutzer von Postgres ein. Nachdem Sie das Passwort erneut erfolgreich geändert haben, gehen Sie zur Datei pg_hba.conf und setzen Sie die Änderung auf "md5" zurück.
Jetzt werden Sie als angemeldet
psql -U postgres
mit Ihrem neuen Passwort.
Lassen Sie mich wissen, wenn Sie alle ein Problem darin finden.
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); ' danke für Ihre Hilfe!
Die Konfiguration, die ich auf meinem Server habe, wurde stark angepasst und ich konnte das Kennwort erst ändern, nachdem ich die Vertrauensauthentifizierung in der pg_hba.conf
Datei festgelegt hatte :
local all all trust
Vergessen Sie nicht, dies wieder in Passwort oder MD5 zu ändern
sudo systemctl restart postgresql.service
Dies war das erste Ergebnis bei Google, als ich nach dem Umbenennen eines Nutzers suchte.
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
Einige andere Befehle, die für die Benutzerverwaltung hilfreich sind:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
Benutzer in eine andere Gruppe verschieben
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
Für meinen Fall unter Ubuntu 14.04 mit Postgres 10.3 installiert. Ich muss die folgenden Schritte ausführen
su - postgres
Benutzer wechseln zu postgres
psql
Postgres Shell betreten\password
Geben Sie dann Ihr Passwort ein\q
um die Shell-Sitzung zu beendenDann wechseln Sie zurück zu root, indem Sie exit
Ihre pg_hba.conf
(meine ist bei /etc/postgresql/10/main/pg_hba.conf
) ausführen und konfigurieren, indem Sie sicherstellen, dass Sie die folgende Zeile haben
local all postgres md5
service postgresql restart
postgres
Wechseln Sie nun zu Benutzer und geben Sie die Postgres-Shell erneut ein. Sie werden aufgefordert, ein Passwort einzugeben.benutze das:
\password
Geben Sie das gewünschte neue Passwort für diesen Benutzer ein und bestätigen Sie es. Wenn Sie sich nicht an das Passwort erinnern und es ändern möchten, können Sie sich als Postgres anmelden und dann Folgendes verwenden:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Ähnlich wie bei anderen Antworten in der Syntax, es sollte jedoch bekannt sein, dass Sie auch ein MD5 des Kennworts übergeben können, damit Sie kein Nur-Text-Kennwort übertragen.
Im Folgenden finden Sie einige Szenarien mit unbeabsichtigten Folgen einer Änderung des Benutzerkennworts im Klartext.
log_statement = ddl
oder höher protokolliert werden , wird Ihr Nur-Text-Kennwort in Ihren Fehlerprotokollen angezeigt.
Nachdem dies gesagt wurde, können wir das Passwort eines Benutzers ändern, indem wir einen MD5 des Passworts erstellen.
Beispiel: "md5" + md5 (Passwort + Benutzername)
In 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
Befehl endlich so aussehen ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
Das Passwort wird immer verschlüsselt in den Systemkatalogen gespeichert. Das Schlüsselwort ENCRYPTED hat keine Auswirkung, wird jedoch aus Gründen der Abwärtskompatibilität akzeptiert. Die Verschlüsselungsmethode wird durch den Konfigurationsparameter password_encryption bestimmt. Wenn die angegebene Kennwortzeichenfolge bereits im MD5-verschlüsselten oder SCRAM-verschlüsselten Format vorliegt, wird sie unabhängig von der Kennwortverschlüsselung unverändert gespeichert (da das System die angegebene verschlüsselte Kennwortzeichenfolge nicht entschlüsseln kann, um sie in einem anderen Format zu verschlüsseln). Dies ermöglicht das erneute Laden verschlüsselter Kennwörter während des Dump / Restore.
Verwenden Sie im Allgemeinen nur die Benutzeroberfläche von pg admin, um db-bezogene Aktivitäten auszuführen.
Wenn Sie sich stattdessen mehr auf die Automatisierung der Datenbankeinrichtung für Ihre lokale Entwicklung oder auf CI usw. konzentrieren ...
Sie können beispielsweise eine einfache Kombination wie diese verwenden.
(a) Erstellen Sie einen Dummy-Superuser über Jenkins mit einem ähnlichen Befehl:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
Dadurch wird ein Superuser namens experiment001 in Ihrer Postgres-Datenbank erstellt.
(b) Geben Sie diesem Benutzer ein Kennwort, indem Sie einen NON-Interactive SQL-Befehl ausführen.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres ist wahrscheinlich die beste Datenbank für Befehlszeilen-Tools (nicht interaktiv). Erstellen von Benutzern, Ausführen von SQL, Erstellen einer Datenbanksicherung usw. Im Allgemeinen ist bei Postgres alles recht einfach, und es ist insgesamt recht trivial, dies in Ihre Entwicklungs-Setup-Skripte oder in die automatisierte CI-Konfiguration zu integrieren.
und die vollautomatische Methode mit Bash und Expect ( in diesem Beispiel stellen wir einen neuen Postgres-Administrator mit dem neu bereitgestellten Postgres-PW sowohl auf Betriebssystem- als auch auf Postgres-Laufzeitebene bereit).
# 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:
Auf vielen Systemen enthält das Konto eines Benutzers häufig einen Punkt oder eine Art Interpunktion (Benutzer: john.smith, horise.johnson). In diesen Fällen muss die oben akzeptierte Antwort geändert werden. Für die Änderung muss der Benutzername in doppelte Anführungszeichen gesetzt werden.
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
Rational:
Postgres ist ziemlich wählerisch, wann ein "doppeltes Anführungszeichen" und wann ein "einfaches Anführungszeichen" verwendet werden soll. Wenn Sie eine Zeichenfolge angeben, verwenden Sie normalerweise ein einfaches Anführungszeichen.