web-dev-qa-db-ja.com

新規インストール後にPostgresqlにログインして認証するにはどうすればよいですか?

ミントubuntuにpostgres 8.4の新規インストールを行いました。 postgresのユーザーを作成し、psqlを使用してログインするにはどうすればよいですか?

Psqlと入力すると、それだけで通知されます

psql: FATAL: Ident authentication failed for user "my-ubuntu-username"
62
user61734

使用できる方法は2つあります。両方ともユーザーの作成が必要ですandデータベース。

デフォルトでは、psqlはユーザーと同じ名前でデータベースに接続します。そのため、「ユーザーのデータベース」を作成する規則があります。また、ユーザーがデータベースを1つだけ必要とする場合は、この規則を破る理由はありません。サンプルのデータベース名としてmydatabaseを使用します。

  1. createuserとcreatedbを使用、データベース名を明示することができます。

    $ Sudo -u postgres createuser -s $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    

    おそらくそれを完全に省略し、代わりにすべてのコマンドのデフォルトをユーザーの名前にする必要があります。

    $ Sudo -u postgres createuser -s $USER
    $ createdb
    $ psql
    
  2. SQL管理コマンドを使用し、TCPを介してパスワードで接続する

    $ Sudo -u postgres psql postgres
    

    そして、psqlシェルで

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;
    

    その後、ログインして、

    $ psql -h localhost -d mydatabase -U myuser -p <port>
    

    ポートがわからない場合は、postgresユーザーとして次を実行することでいつでも取得できます。

    SHOW port;
    

    または、

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf
    

補足:postgresユーザー

postgresユーザーを変更することをお勧めします[〜#〜] not [〜#〜]

  1. 通常、OSからロックされています。 postgresとしてオペレーティングシステムに「ログイン」することは想定されていません。 postgresとして認証を取得するには、ルートが必要です。
  2. 通常はパスワードで保護されておらず、ホストオペレーティングシステムに委任されます。これは良いことです。これは通常、SQL Serverのpostgresに相当するPostgreSQLであるSAとしてログインするには、基礎となるデータファイルへの書き込みアクセスが必要であることを意味します。そして、それはあなたがとにかく大混乱を通常破ることができることを意味します。
  3. これを無効にすると、指定されたスーパーユーザーによるブルートフォース攻撃のリスクを排除できます。スーパーユーザーの名前を隠したり隠したりすることには利点があります。
96
Evan Carroll

デフォルトでは、postgresユーザーを使用する必要があります。

Sudo -u postgres psql postgres
34
user262976

取得しているエラーは、your-ubuntu-usernameが有効なPostgresユーザーではないためです。

使用するデータベースユーザー名をpsqlに伝える必要があります

psql -U postgres

接続するデータベースを指定する必要がある場合もあります

psql -U postgres -d <dbname>
14
cope360

「通常の」ユーザー(postgresではない)としてデータベースに接続することもできます。

postgres=# \connect opensim Opensim_Tester localhost;

Password for user Opensim_Tester:    

You are now connected to database "opensim" as user "Opensim_Tester" on Host "localhost" at port "5432"
5
Dutch Glory

データベースクライアントがTCP/IPで接続し、pg_hba.confでident authが設定されている場合、identdがインストールされ実行されていることを確認してください。 「localhost」に接続するローカルクライアントのみがある場合でも、これは必須です。

また、Postgresqlがlocalhostに接続するクライアントを歓迎するためには、今日ではidentdが IPv6対応 である必要があることに注意してください。

3
toka