web-dev-qa-db-ja.com

macOSでユーザーを「postgres」ユーザーに切り替えると「su:申し訳ありません」エラーが発生する

Postgres installers EnterpriseDB.comによってコミュニティに親切に提供されたものは、一般的な macOSpostgresユーザーアカウントを作成します。

Terminal.app のコンソールセッションで、そのユーザーに切り替える必要があります。私の目標は、そのユーザーの権限でテキストエディターを実行して、pg_hba.conf Postgresのユーザー認証ルールを制御するファイル。

私が試したとき:

su - postgres

…ユーザーのパスワードの入力を求められますが、正常に入力してもエラーメッセージが表示されます。

su:すみません

パスワードは正しいと思います。 postgresユーザーにアクセスするにはどうすればよいですか?

3
Basil Bourque

Sudo su postgres

この スタックオーバーフローのクローズド質問 および その重複 を見つけたので、見つかった解決策をここに投稿します there および there

Sudoコマンドsuコマンドと組み合わせて使用する必要があります。

Sudo su postgres

プロンプトが表示されたら、postgresユーザーのパスワードではなく、macOS管理ユーザーのパスワードを入力します。この時点で、Mac管理ユーザーはSudoユーザーではなくpostgresコマンドを実行しているユーザーです。

Sudosuを組み合わせる必要がある理由はわかりませんが、実際には 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

nanotext-editor アプリをpostgresユーザーとして実行するには:

Sudo -u postgres nano
3
Basil Bourque

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認証方法のみを使用する場合は、データベースパスワードは不要です。

3
Daniel Vérité