web-dev-qa-db-ja.com

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

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

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

createuserについても同じです。

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

172
Rohit Banga

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

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

    Sudo -u postgres psql template1

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

    ALTER USER postgresと暗号化されたパスワード「xxxxxxx」。

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

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

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

    local all postgrespeer md5

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

    Sudo /etc/init.d/postgresql restart

    (ここで、psql -U postgresで動作することを確認できます。)

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

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

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

    パスワードに注意:最初に新しいパスワード(新しいユーザー用)を2回要求し、繰り返し、次にpostgresパスワード(手順2で指定したパスワード)を要求します。

  6. 再び、pg_hba.confファイルを編集し(上記のステップ3を参照)、他のすべてのユーザーに関する行で "peer"を "md5"に変更します。

    local all allpeer md5

  7. (ステップ4のように)再起動し、-U postgresなしでログインできることを確認します。

    psql template1

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

  8. これでcreatedb <dbname>が機能するはずです。

302
Manur

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

$ psql -U postgres

次に、通常どおり新しいデータベースを作成します。

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

これはpg_hba.confに触れることなく動作するはずです。ネットワーク上で何らかのGUIツールを使用してこれを実行できるようにする場合は、pg_hba.confを台無しにする必要があります。

51

これは私の解決策です:

su root
su postgres
psql
19
Admdebian

編集:警告: 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

13
Robert

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

  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ユーザーを変更することをお勧めしますNOT

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

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

2
Neall

私のように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
Nick Woodhams
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`
1
Suman Astani

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

0