Postgresqlをインストールしたばかりで、インストール中にパスワードxを指定しました。 createdb
を実行してパスワードを指定しようとすると、次のメッセージが表示されます。
createdb:データベースに接続できませんでしたpostgres:致命的:ユーザーのパスワード認証に失敗しました
createuser
についても同じです。
どのように始めるべきですか?自分をユーザーとしてデータベースに追加できますか?
他の答えは私には完全に満足していませんでした。 Xubuntu 12.04.1 LTSのpostgresql-9.1で機能したものを次に示します。
ユーザーpostgresを使用してデフォルトのデータベースに接続します。
Sudo -u postgres psql template1
ユーザーpostgresのパスワードを設定し、psqlを終了します(Ctrl-D):
ALTER USER postgresと暗号化されたパスワード「xxxxxxx」。
pg_hba.conf
ファイルを編集します。
Sudo vim /etc/postgresql/9.1/main/pg_hba.conf
そして、postgresに関する行で「peer」を「md5」に変更します。
local all postgres
peermd5
データベースを再起動します。
Sudo /etc/init.d/postgresql restart
(ここで、psql -U postgres
で動作することを確認できます。)
あなたと同じ名前のユーザーを作成します(見つけるには、whoami
と入力できます)。
createuser -U postgres -d -e -E -l -P -r -s
<my_name>
これらのオプションは、ログイン、データベースの作成、新しいロールの作成、スーパーユーザーであり、暗号化されたパスワードを持つユーザーを作成するようにpostgresqlに指示します。本当に重要なのは、暗号化されるパスワードを入力するように求められる-P -Eと、createdb
を実行できるように-dです。
パスワードに注意:最初に新しいパスワード(新しいユーザー用)を2回要求し、繰り返し、次にpostgresパスワード(手順2で指定したパスワード)を要求します。
再び、pg_hba.conf
ファイルを編集し(上記のステップ3を参照)、他のすべてのユーザーに関する行で "peer"を "md5"に変更します。
local all all
peermd5
(ステップ4のように)再起動し、-U postgresなしでログインできることを確認します。
psql template1
単にpsql
を実行すると、同じ名前(つまりwhoami
)を持つデフォルトのデータベースに接続しようとするため失敗します。 template1は、最初からここにある管理データベースです。
これでcreatedb <dbname>
が機能するはずです。
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
を台無しにする必要があります。
これは私の解決策です:
su root
su postgres
psql
編集:警告: Evan Carroll が投稿した回答を読んでください。このソリューションは安全ではなく、推奨されないようです
これは、標準Ubuntu 14.04 64ビットインストールで機能しました。
私は http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html で見つけた、小さな修正を加えた指示に従いました。
Sudo apt-get install postgresql
Sudo –u postgres psql postgres
\password postgres
\q
#Database administrative login by Unix domain socket local all postgres peer
に:
#Database administrative login by Unix domain socket local all postgres md5
Sudo service postgresql restart
Sudo –u postgres createdb mytestdb
psql –U postgres –W
\l
使用できる方法は2つあります。両方ともユーザーの作成が必要ですandデータベース。
createuserとcreatedbを使用、
$ Sudo -u postgres createuser --superuser $USER
$ createdb mydatabase
$ psql -d mydatabase
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。
postgres
としてオペレーティングシステムに「ログイン」する人はいません。 postgres
として認証するには、rootが必要です。postgres
に相当するPostgreSQLであるSA
としてログインするには、基礎となるデータファイルへの書き込みアクセスが必要であることを意味します。そして、それはあなたがとにかく大混乱を通常破ることができることを意味します。おそらく pg_hba.conf
ファイルを更新する必要があります。このファイルは、どのユーザーがどのIPアドレスからログインできるかを制御します。 postgresユーザーはデフォルトでかなりロックダウンされていると思います。
私のように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
できた!
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`
インストールのディレクトリを参照してこのファイル「pg_env.bat」を実行するだけです。そのため、binフォルダーに移動してpgAdmin.exeを実行します。これは間違いなく動作するはずです!