初めてpostgresqlを設定する方法は?


197

postgresqlをインストールしたばかりで、インストール中にパスワードxを指定しました。createdbパスワードを指定しようとすると、次のメッセージが表示されます。

createdb:データベースpostgresに接続できませんでした:FATAL:ユーザーのパスワード認証に失敗しました

も同じですcreateuser

どのように始めればよいですか?自分をユーザーとしてデータベースに追加できますか?



4
これは、1年後に尋ねられたこの質問とほとんど同じです。しかし、これは危険な主な答えがあると思います。ユーザーを設定しないでくださいpostgres。これSUはPostgreSQLのものであり、ログイン攻撃の可能性があります。別のスーパーユーザーを作成postgresし、rootでUNIX管理者用にロックを予約します。
エヴァンキャロル

回答:


329

他の答えは私にとって完全に満足のいくものではありませんでした。Xubuntu 12.04.1 LTSのpostgresql-9.1で機能したものを次に示します。

  1. ユーザーpostgresでデフォルトのデータベースに接続します。

    sudo -u postgres psql template1

  2. ユーザーpostgresのパスワードを設定し、psqlを終了します(Ctrl-D):

    暗号化されたパスワード 'xxxxxxx'を持つALTER USER postgres;

  3. pg_hba.confファイルを編集します。

    sudo vim /etc/postgresql/9.1/main/pg_hba.conf

    そして、postgresに関する行で「peer」を「md5」に変更します。

    ローカルのすべての      postgres      ピア md5

    実行しているpostgresqlのバージョンを確認するには、でバージョンフォルダを探します/etc/postgresql。また、VIMの代わりにNanoまたはその他のエディターを使用することもできます。

  4. データベースを再起動します。

    sudo /etc/init.d/postgresql restart

    (ここでは、それがで動作したかどうかを確認できますpsql -U postgres)。

  5. あなたと同じ名前のユーザーを作成します(検索するには、と入力しますwhoami)。

    sudo createuser -U postgres -d -e -E -l -P -r -s <my_name>

    オプションは、ログイン、データベースの作成、新しいロールの作成、スーパーユーザーであり、暗号化されたパスワードを持つユーザーを作成するようにpostgresqlに指示します。本当に重要なものは-P -Eで、暗号化されるパスワードを入力するように求められます。-dは、を実行できるようにしますcreatedb

    パスワードに注意してください:最初に新しいパスワード(新しいユーザーの場合)を2回要求し、次に繰り返し、次にpostgresパスワード(ステップ2で指定したもの)を1回要求します。

  6. 再度、pg_hba.confファイルを編集し(上記のステップ3を参照)、 "peer"を "md5"に変更します。

    ローカルすべて           ピア md5

  7. 再起動し(手順4と同様)、-U postgresなしでログインできることを確認します。

    psqlテンプレート1

    単にを実行するpsqlと、同じ名前(つまりwhoami)を持つデフォルトのデータベースに接続しようとするため、失敗します。template1は、最初からここにある管理データベースです。

  8. これcreatedb <dbname>で動作するはずです。


この手順はUbuntu 13.10でもうまく機能しました。ユーザーを作成するときは、手順5のsudoを覚えておいてください。
デビッドデンヘリング、2014

2
Ubuntu 14.04 LTSでもうまく機能しました
ilhnctn 2014年

2
ちょうど注記として、入力行pg_hba.confは最初の行でなければなりません。そうでなければ、他のルールのために無視される可能性があります(F21のpgsql 9.3.5)。これを理解するのに少し時間がかかりました。postgresqlユーザーのコメントアウト済みの行のコメント化を解除して変更するだけでは、簡単には実行できません。
2015年

これはPG 9.4で変更されたと思います。私が変更しlocal all all peerたのはポイント3 だけだからmd5です。OK?
レオ・レオポルド・ヘルツ준 영

1
回答を2017年に更新してください!PostgreSQL 9.6とUBUNTU 16 LTS ... 簡単な方法はありません??
Peter Krauss 2017年

55

Linuxでは、PostgresQLは通常、rootユーザーpostgresがシェル(コンソールまたはssh)からpostgresスーパーユーザーとしてログインできるように構成されています。

$ psql -U postgres

次に、いつものように新しいデータベースを作成します。

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;

これはに触れなくても機能するはずpg_hba.confです。ネットワーク経由でGUIツールを使用してこれを実行できるようにする場合は、をいじる必要がありますpg_hba.conf


私は自分のディレクトリに対してinitdbを実行し、構成ファイルが存在するWindowsで作業しています。Createdbは機能しますが、psqlテストを実行すると、次のメッセージが表示されます。警告:コンソールコードページ(437)がWindowsコードページ(1252)と異なります。8ビット文字が正しく機能しない可能性があります。詳細については、psqlのリファレンスページ「Windowsユーザー向けの注意事項」を参照してください。そして、コマンドはどれも機能しません。
Rohit Banga

7
psql: FATAL: Peer authentication failed for user "postgres"sudoでも。
Peter Krauss

完璧な答えです。私は設定ファイルに触れたくなかったので、これはUbuntu上のPostgreSQL 10.10で問題なく動作しました。その後、で接続できるはずpsql -d mydatatabase -U myuserです。
ranu

21

これは私の解決策です:

su root
su postgres
psql

4
多くのサイトでpg_hba.confがpostgresシステムアカウント(ピアメソッド)に対してpostgres dbユーザーを認証するため、これは多くの場合に機能します。ただし、ログインが成功するかどうかは、最終的には特定のサイトのpg_hba.confの内容に依存します。
リードサンドバーグ、2013年

1
私のために働いた。最初の行をに置き換えましたsudo bash
eje211 2014年

これがどのように役立つかわかりません..私の理解から、これはrootとpostgresにログインし、psqlを実行します。正確には何が起こっていますか?ありがとう!
olleh

20

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

  1. createuserとcreatedbを使用して

    $ sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
  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、PostgreSQLでSQL Serverに相当するものとしてログインするためにはSA、基礎となるデータファイルへの書き込みアクセス権が必要です。そして、それはあなたが通常とにかく大混乱を台無しにすることができることを意味します。
  3. これを無効にしておくことで、指定されたスーパーユーザーによるブルートフォース攻撃のリスクを取り除きます。スーパーユーザーの名前を隠したり隠したりすることには利点があります。

最初の方法では、ユーザーは特権を失います。私は最初のコマンドの代わりにこれを使用することになりました:sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $(whoami)
Fabien Snauwaert 2017

@FabienSnauwaert -sは、ユーザーをスーパーユーザーにします。
エヴァンキャロル

16

編集:警告:Evan Carrollが投稿した回答を読んでください。このソリューションは安全ではなく、推奨されないようです。

これは、標準のUbuntu 14.04 64ビットインストールで機能しました。

私はhttp://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.htmlで見つけた小さな変更を加えた指示に従いました

  1. postgreSQLをインストールします(まだマシンにインストールされていない場合):

sudo apt-get install postgresql

  1. postgresユーザーを使用してpsqlを実行する

sudo –u postgres psql postgres

  1. postgresユーザーの新しいパスワードを設定します。

\password postgres

  1. psqlを終了する

\q

  1. /etc/postgresql/9.3/main/pg_hba.confを編集して変更します:

#Database administrative login by Unix domain socket local all postgres peer

に:

#Database administrative login by Unix domain socket local all postgres md5

  1. postgreSQLを再起動します。

sudo service postgresql restart

  1. 新しいデータベースを作成する

sudo –u postgres createdb mytestdb

  1. postgresユーザーでpsqlを再度実行します。

psql –U postgres –W

  1. 既存のデータベースを一覧表示します(新しいデータベースが存在するはずです)。

\l


1
postgresユーザーをアクティブにすることは悪い考えだと思うので、私は反対票を投じました。stackoverflow.com/a/41604969/124486
エヴァンキャロル

4
Note: textdb is the database which you are going to explore with 'alex' user 

root@kalilinux:~# sudo su - postgres 
postgres=#  psql   
postgres=#  create database testdb;
postgres=#  create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;`enter code here`

3

おそらくpg_hba.confファイルを更新する必要があります。このファイルは、ユーザーがどのIPアドレスからログインできるかを制御します。デフォルトでは、postgresユーザーはかなりロックダウンされていると思います。


2
RHEL6.4およびpostgres 8.4の場合、ファイルはにありました/var/lib/pgsql/data/pg_hba.conf。forに変更identします(sshを使用している場合)。trusthostlocal
DavidG 2014

3

私のようにmacOSを実行している場合、postgresユーザーがいない可能性があります。

実行しようとするsudo -u postgres psqlと、エラーが発生しましたsudo: unknown user: postgres

幸いなことに、postgresが提供する実行可能ファイルがあります。

createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick

その後、psql問題なくアクセスできました。

psql
psql (10.2)
Type "help" for help.

nick=#

新しいpostgresインスタンスを最初から作成する場合は、次の手順を実行します。2つのインスタンスを実行できるように、デフォルト以外のポートを使用しました。

mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local

次に/var/postgres/var-10-local/postgresql.conf、優先ポート5433で編集しました。

/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433

createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433
createdb --owner=nick --port=5433

できた!


2

MacOSでは、以下の手順に従って動作しました。

インストール後に初めて、システムのユーザー名を取得します。

$ cd ~
$ pwd
/Users/someuser
$ psql -d postgres -U someuser

これでシステムにログインしたので、DBを作成できます。

postgres=# create database mydb;
CREATE DATABASE
postgres=# create user myuser with encrypted password 'pass123';
CREATE ROLE
postgres=# grant all privileges on database mydb to myuser;
GRANT

0

インストールのディレクトリに移動してこのファイル「pg_env.bat」を実行するだけなので、binフォルダーに移動してpgAdmin.exeを実行します。これは間違いなく機能するはずです!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.