インストールと初期設定
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にインストール