他の回答は、私にとって完全に満足できるものではありませんでした。 Xubuntu 12.04.1 LTS で postgresql-9.1 が機能したのは次のとおりです。
<オール>ユーザー postgres でデフォルトのデータベースに接続します:
<ブロック引用>sudo -u postgres psql テンプレート 1
ユーザー postgres のパスワードを設定し、psql を終了します (Ctrl-D):
<ブロック引用>暗号化されたパスワード「xxxxxxx」で ALTER USER postgres;
pg_hba.conf
を編集します ファイル:
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
postgres に関する行で「peer」を「md5」に変更します。
<ブロック引用>
ローカル すべて postgres 仲間 md5
実行している postgresql のバージョンを確認するには、/etc/postgresql
の下のバージョン フォルダーを探します。 .また、VIM の代わりに Nano やその他のエディターを使用することもできます。
データベースを再起動してください:
<ブロック引用>sudo /etc/init.d/postgresql 再起動
(ここで psql -U postgres
で動作するかどうかを確認できます ).
あなたと同じ名前のユーザーを作成します (検索するには whoami
と入力します) ):
sudo createuser -U postgres -d -e -E -l -P -r -s <my_name>
このオプションは、postgresql に、ログイン、データベースの作成、新しいロールの作成が可能な、スーパーユーザーであり、暗号化されたパスワードを持つユーザーを作成するように指示します。本当に重要なのは -P -E で、暗号化されるパスワードを入力するよう求められます。また、-d で createdb
を実行できます。 .
パスワードに注意 :最初に新しいパスワード (新しいユーザー用) を 2 回尋ね、次に postgres パスワード (ステップ 2 で指定したもの) を 1 回尋ねます。
ここでも pg_hba.conf
を編集します ファイル (上記の手順 3 を参照) を編集し、「すべての」他のユーザーに関する行で「peer」を「md5」に変更します。
ローカル すべて すべて 仲間 md5
(手順 4 と同様に) 再起動し、-U postgres なしでログインできることを確認します。
<ブロック引用>psql テンプレート 1
単なる psql
を実行すると、 、あなたと同じ名前を持つデフォルトのデータベースに接続しようとするため失敗します(つまり、 whoami
)。 template1 は、最初からここにある管理データベースです。
現在 createdb <dbname>
動作するはずです。
Linux では、PostgresQL は通常、root ユーザーが postgres スーパーユーザー postgres
としてログインできるように構成されています。 シェル (コンソールまたは ssh) から。
$ psql -U postgres
次に、通常どおり新しいデータベースを作成します:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
これは pg_hba.conf
に触れなくても動作するはずです .ネットワーク経由で何らかの GUI ツールを使用してこれを実行できるようにしたい場合は、pg_hba.conf
をいじる必要があります。 .
使用できる方法は 2 つあります。どちらもユーザーを作成する必要がありますおよび データベース。
<オール>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
の変更 ユーザー。
postgres
としてオペレーティング システムに「ログイン」することは想定されていません。 . postgres
として認証するには root が必要です .postgres
としてログインすることを意味します これは、SQL Server の SA
に相当する PostgreSQL です。 、基になるデータ ファイルへの書き込みアクセス権が必要です。そして、それは、いずれにせよ、通常は大混乱を引き起こす可能性があることを意味します。