回答:
パスワードなしのログインの場合:
sudo -u user_name psql db_name
忘れた場合にパスワードをリセットするには:
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
...何らかの理由で、グーグルで検索しているときにgoogleがここを指していました:)
次に、次のように入力します。
$ sudo -u postgres psql
次に:
\password postgres
その後、終了するにはpsql
:
\q
それが機能しない場合は、認証を再構成します。
編集/etc/postgresql/9.1/main/pg_hba.conf
(パスは異なります)と変更:
local all all peer
に:
local all all md5
次に、サーバーを再起動します。
$ sudo service postgresql restart
\p
と、パスワードが表示されます。I型の場合\password postgres
には、パスワードと、その後の警告を与える\p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
ユーザーのパスワードを暗号化することができます。
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.
パスワードを変更する最善の方法は、単に使用することだと思います。
\password
Postgresコンソールで。
ソース:
このコマンドで暗号化されていないパスワードを指定する場合は注意が必要です。パスワードはクリアテキストでサーバーに送信され、クライアントのコマンド履歴またはサーバーログに記録される場合もあります。psqlには、クリアテキストのパスワードを公開せずにロールのパスワードを変更するために使用できるコマンド\ passwordが含まれています。
https://www.postgresql.org/docs/9.0/static/sql-alterrole.htmlから。
\password username
Linuxコマンドラインを使用してパスワードを変更するには、次のコマンドを使用します。
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
パスワードを変更するには
sudo -u postgres psql
その後
\password postgres
新しいパスワードを入力して確認してください
その後\q
、終了します
Postgresql Configに移動し、pg_hba.confを編集します
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
次に、この行を変更します。
Database administrative login by Unix domain socket
local all postgres md5
へ:
Database administrative login by Unix domain socket
local all postgres peer
次に、SUDOコマンドを使用してPostgreSQLサービスを再起動します。
psql -U postgres
入力され、Postgresqlターミナルが表示されます
次に入る
\password
Postgresのデフォルトユーザーの新しいパスワードを入力します。パスワードが正常に変更されたら、pg_hba.confに移動して、変更を「md5」に戻します。
今、あなたはとしてログインします
psql -U postgres
新しいパスワードで。
問題が見つかった場合はお知らせください。
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 、$ホスト); ' ご協力いただきありがとうございます!
サーバーで取得した構成は大幅にカスタマイズされており、ファイルに信頼認証を設定した後でのみパスワードを変更pg_hba.conf
できました。
local all all trust
これをパスワードまたはmd5に戻すことを忘れないでください
sudo systemctl restart postgresql.service
これは、ユーザー名を変更する方法を探していたときのGoogleでの最初の結果でした。
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
ユーザー管理に役立つ他のいくつかのコマンド:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
ユーザーを別のグループに移動する
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
私の場合、Ubuntu 14.04にpostgres 10.3がインストールされています。次の手順を実行する必要があります
su - postgres
ユーザーを切り替える postgres
psql
postgresシェルに入る\password
次にパスワードを入力してください\q
シェルセッションを終了するには次に、実行してrootに戻り、次の行があることを確認しexit
てpg_hba.conf
(mineは/etc/postgresql/10/main/pg_hba.conf
)を構成します。
local all postgres md5
service postgresql restart
postgres
ユーザーに切り替えて、再度postgresシェルに入ります。パスワードの入力を求められます。構文の他の回答と同様ですが、プレーンテキストのパスワードを送信しないように、パスワードのmd5を渡すこともできます。
次に、プレーンテキストでユーザーのパスワードを変更した場合の意図しない結果のシナリオをいくつか示します。
log_statement = ddl
またはそれ以上のログを記録するようにログ設定を設定している場合、プレーンテキストのパスワードがエラーログに表示されます。
以上が、パスワードのmd5を作成してユーザーのパスワードを変更する方法です。
例:「md5」+ md5(パスワード+ユーザー名)
バッシュで:
~$ 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
コマンドは次のようになります ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
パスワードは常にシステムカタログに暗号化されて保存されます。ENCRYPTEDキーワードは効果がありませんが、下位互換性のために受け入れられます。暗号化の方法は、構成パラメーターpassword_encryptionによって決定されます。提示されたパスワード文字列がすでにMD5暗号化またはSCRAM暗号化形式である場合、それはpassword_encryptionに関係なくそのまま保存されます(指定された暗号化パスワード文字列を復号化して別の形式で暗号化することはできないため)。これにより、ダンプ/復元中に暗号化されたパスワードをリロードできます。
一般に、db関連のアクティビティを実行するには、pg admin UIを使用します。
代わりに、ローカル開発、またはCIなどのデータベースセットアップの自動化により重点を置いている場合...
たとえば、次のような単純なコンボを使用できます。
(a)次のようなコマンドでjenkinsを介してダミーのスーパーユーザーを作成します。
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
これにより、postgres dbに実験001というスーパーユーザーが作成されます。
(b)非インタラクティブSQLコマンドを実行して、このユーザーにパスワードを設定します。
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgresは、おそらくコマンドライン(非対話型)ツールに最適なデータベースです。ユーザーの作成、SQLの実行、データベースのバックアップの作成など。一般に、postgresを使用することはすべて非常に基本的であり、これを開発セットアップスクリプトまたは自動CI構成に統合することは全体として非常に簡単です。
bash and expectを使用した完全に自動化された方法(この例では、OSとpostgresランタイムレベルの両方で新しくプロビジョニングされたpostgres pwを使用して、新しい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:
多くのシステムでは、ユーザーのアカウントにピリオドまたは何らかの句読点が含まれていることがよくあります(ユーザー:john.smith、horise.johnson)。これらの場合、上記の受け入れられた回答に変更を加える必要があります。この変更では、ユーザー名を二重引用符で囲む必要があります。
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
合理的な:
Postgresは、「二重引用符」を使用する場合と「単一引用符」を使用する場合にかなりうるさいです。通常、文字列を指定するときは、単一引用符を使用します。