103

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

psql と入力すると、

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

6 に答える 6

164

使用できる方法は 2 つあります。どちらも、ユーザーデータベースを作成する必要があります。

デフォルトでは、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ます。

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

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

sudo -u postgres psql postgres
于 2010-01-31T17:25:12.753 に答える
31

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

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

psql -U postgres

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

psql -U postgres -d <dbname>
于 2010-01-31T17:40:01.303 に答える
3

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

また、最近では、 Postgresql がローカルホストに接続するクライアントを歓迎するために、identd をIPv6 対応にする必要がある場合があることに注意してください。

于 2011-04-08T00:31:54.763 に答える