Postgres installers EnterpriseDB.comによってコミュニティに親切に提供されたものは、一般的な macOS にpostgres
ユーザーアカウントを作成します。
Terminal.app のコンソールセッションで、そのユーザーに切り替える必要があります。私の目標は、そのユーザーの権限でテキストエディターを実行して、pg_hba.conf
Postgresのユーザー認証ルールを制御するファイル。
私が試したとき:
su - postgres
…ユーザーのパスワードの入力を求められますが、正常に入力してもエラーメッセージが表示されます。
su:すみません
パスワードは正しいと思います。 postgres
ユーザーにアクセスするにはどうすればよいですか?
Sudo su postgres
この スタックオーバーフローのクローズド質問 および その重複 を見つけたので、見つかった解決策をここに投稿します there および there 。
➥Sudo
コマンドをsu
コマンドと組み合わせて使用する必要があります。
Sudo su postgres
プロンプトが表示されたら、postgres
ユーザーのパスワードではなく、macOS管理ユーザーのパスワードを入力します。この時点で、Mac管理ユーザーはSudo
ユーザーではなくpostgres
コマンドを実行しているユーザーです。
Sudo
とsu
を組み合わせる必要がある理由はわかりませんが、実際には macOS Mojave で機能します。私はBSDとLinuxに関連するさまざまな検索作業でこのヒントを見つけられなかったので、おそらくこれはMacのみのApple事であり、おそらく追加のセキュリティ対策です。あるいは、おそらくUnixスタイルのOS 、su
コマンドはroot
ユーザーが実行する必要があります。macOSでは、セキュリティ上の理由から、root
アカウントはデフォルトで無効になっています。Mac管理ユーザーアカウントは、 root
、およびデフォルトでsu
の実行を許可されていない可能性がありますDunno、気にしない、回避策は機能します。
Sudo -u
Craig Ringerへ および Erwin Brandstetterへ によれば、よりモダンな形式は次のとおりです。
Sudo -u postgres -i
このページ によると:
-u
は、「指定されたコマンドをこの指定されたユーザーとして実行する」ことを意味します。postgres
は、コマンドを実行するユーザー名を指定しています。-i
は初期ログインをシミュレートします。つまり、そのユーザーの起動スクリプトを実行してシェルが初期化されます。古いアプローチと新しいアプローチの詳細については、姉妹サイトのこの質問を参照してください Sudo su-postgresとSudo -u postgresの違いは何ですか? 。 Craig Ringerによる回答では、(a)Sudo su
を忘れ、(b)代わりにSudo -u
を使用しています。
postgres
ユーザーとしてアプリを実行するpsql
セッションをpostgres
ユーザーとして実行するには:
Sudo -u postgres psql
nano
text-editor アプリをpostgres
ユーザーとして実行するには:
Sudo -u postgres nano
EBDインストーラーはインストール中にパスワードを要求しますが、パスワードを持たないpostgres
Unixユーザーではなく、データベースユーザー向けです。
これについては、EDBサイトの Postgres、Passwords、およびInstallers で説明されています。見積もり:
LinuxやMac OS XなどのUnixライクなオペレーティングシステムでは、アカウントはパスワードなしでセットアップされ、ユーザーは通常、再び心配する必要はありません。
su - postgres
が機能しないことのもっともらしい説明は、データベースパスワードとOSパスワードを混同していることです。
su - postgres
を使用可能にするには、OSパスワードを最初に設定する必要があります。これは次のように実行できます。
$ Sudo passwd postgres
これは、Linuxディストリビューションにパッケージ化されたPostgreSQLにも当てはまります。実際、Linux用のPostgreSQLパッケージはさらに一歩進んで、データベースのスーパーユーザーにパスワードを要求しません。これにより、完全に自動化されたインストールが可能になります。 Sudo
を常に使用する場合はOSパスワードが不要であるのと同様に、peer
ユーザーがデフォルトのpostgres
認証方法のみを使用する場合は、データベースパスワードは不要です。