LoginSignup
8
9

More than 5 years have passed since last update.

Postgres 初期設定関連 自分用メモ crossfish21

Posted at

インストールと初期設定

rpm -qa | grep postgres   で、インストールされているRPMパッケージを確認しておこう



Postgresql 9.6 のインストールなら
sudo yum install https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm

Postgresql 10.3 のインストールなら
sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-2.noarch.rpm


でyumパッケージダウンロード
※redhatとCentOS用が存在するみたいだけど、どちらでもいいのかも。RedHatにインストール時は気をつけよう

Postgresql 9.6の場合は
sudo yum install -y postgresql96-server postgresql96-contrib  でインストール

Postgresql 10.3の場合は
sudo yum install -y postgresql10-server postgresql10-contrib  でインストール


psql --version でバージョン確認
psql (PostgreSQL) 9.6.8  なんて表示されればOK


※以降は10.3で説明する

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb でDB初期化
Initializing database ... OK と表示されるはず


systemctl start postgresql-10.service  でサービス起動


systemctl enable postgresql-10.service  で自動起動するように設定


sudo passwd postgres  で、「postgres」ユーザの新しいパスワードを設定
"brownAxe100"  にしておく


su - postgres    で、「postgres」ユーザとしてDBにログイン
-bash-4.2$  というプロンプトになっているはず


psql    でDBへ接続する。これで標準で用意されているデータベース「postgres」に接続する
postgres=#  というプロンプトになっているはず(postgresがDB名。接続するDBごとに変わってくる)


create role role21 with login createdb replication password 'yellowAxe200';  で、Role作成
commmit;   コミットしないと有効にならないらしい
「role21」というROLE名、「yellowAxe200」というパスワードになる
login createdb replication は、ログインとDB作成とレプリケーションができるRoleという意味


q   でDB切断してみる
-bash-4.2$  というプロンプトになっているはず


exit  でログアウトする
プロンプトが通常のものになるはず


su - postgres    で、「postgres」ユーザとしてDBにログイン
-bash-4.2$  というプロンプトになっているはず


psql -l   でDB一覧を表示


exit  でログアウトする



新しく作成したroleでpostgresにログインするため、OSのユーザを追加
※はっきりしないが、role名と同じ名前のユーザを用意しないと都合が悪いらしい

useradd role21     でユーザ追加
passwd role21 で、role21のパスワードを設定する
New password: に、パスワードを入力(yellowAxe200)


systemctl stop postgresql-10.service  でPOSTGRESを終了する


ここまでできれば、一旦はOKだろう
systemctl start postgresql-10.service  で起動しなおしておこう




※設定ファイルの設定

su -    でrootに変更


cd /var/lib/pgsql/10/data   でディレクトリ移動

postgresql.conf というファイルを編集


#listen_addresses = 'localhost' という行は、アクセスを設定している。デフォルトではlocalhostのみ
listen_addresses = '*' のようにすれば、外部アクセス可能になる


#port = 5432 は、接続ポート。デフォルトは5432
これもport = 8888 などにすれば、変更可能


log_line_prefix = '%m [%p] ' は、ログの出力形式設定
log_line_prefix = '< %t %u %d >' などにすれば、「日時 ユーザー DB」の形式になる



次に、pg_hba.confを編集

host all all 127.0.0.1/32 ident  という行の下に
host all all 接続許可するIPアドレス/32 trust  と追加すれば、外部接続を無条件に許可(パスワード無しに)する
IPアドレスはCIDR表記なので注意。/32を末尾につければ問題ないらしい

※host all all 0.0.0.0/0 trust とすれば、全てのIPからアクセス可能になるが、これは開発環境のみの設定。本番は絶対NG

とりあえず、以下のようにしておけば無難か。md5形式の暗号化でパスワードを入力する設定

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     md5
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5




※他にも設定は色々とある



systemctl restart postgresql-10.service   で再起動し、設定を反映


DB作成・テーブル作成

[root@tk2-404-43387 local]  このようにプロンプトが通常の状態で、
su - role21    このコマンドを入力。role21はPostgres用に作成したのユーザ
パスワードを入力


[role21@tk2-404-43387 ~]$  というプロンプトになるはず。これでrole21でログインしている


psql postgres  で、データベースpostgresに入る

postgres=> というプロンプトになっているはず



createdb test01   で「test01」というDBを作成
psql -l   で確認してみる

※データベースの所有者は、作成したユーザになるので注意


psql test01    で、test01に接続
プロンプトが  test01=#  になっているはず


create table table01(id integer not null, name varchar(150) not null,data1 varchar(255),data2 varchar(255)
, primary key(id));
のようにして、テーブル「table01」を作成  CREATE TABLE  と表示されるはず


d  でテーブル一覧を表示し、確認する


このあと、SQL文を普通に入力していけばいい


i /usr/local/sqlFiles/sql.txt  のようにして、
SQL文を入力したファイルを用意し、それを読み込むことも可能

role設定 LinuxとWindowsの両方

スーパーユーザ
ユーザ名   postgres
pass       brownAxe100




一般ユーザ
ユーザ名   role21
pass       yellowAxe200

create role role21 with login createdb replication password 'yellowAxe200';  で作成

※必ず commmit; を実行しよう。そうしないと権限の設定が正確にならないらしい

データベースは作成したユーザに所有権が与えられるので、スーパーユーザ以外でログインしてDB作成するように

Winにインストール

リンク1


8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9