利用するアプリケーションの都合でPostgreSQLが必要だったのでインストールしました.
バージョンが違うだけで,ほとんど以下の記事と同じです.
CentOS 7にPostgreSQL最新版をインストール
CentOSのバージョン
$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
PostgreSQLのインストール
PostgreSQLのインストール
PostgreSQLのRPMパッケージをダウンロード
$ wget yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
ここからは管理者で実行,RPMパッケージをインストール
$ su
# rpm -ivh pgdg-centos95-9.5-2.noarch.rpm
yumでパッケージをインストール
# yum -y install postgresql95-server postgresql95-devel postgresql95-contrib
PostgreSQL初期化
# systemctl start postgresql-9.5
Job for postgresql-9.5.service failed because the control process exited with error code. See "systemctl status postgresql-9.5.service" and "journalctl -xe" for details.
エラーを吐くので指定通りに確認を行う.
すると,PostgreSQLのデータベースクラスタの作成を求められます.
initdbについてはこちらのページに書かれています.
initdb
# systemctl status postgresql-9.5.service
● postgresql-9.5.service - PostgreSQL 9.5 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 土 2016-01-09 15:42:19 JST; 24s ago
Process: 14696 ExecStartPre=/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)
1月 09 15:42:19 local systemd[1]: Starting PostgreSQL 9.5 database server...
1月 09 15:42:19 local systemd[1]: postgresql-9.5.service: control process exited, code=exited status=1
1月 09 15:42:19 local systemd[1]: Failed to start PostgreSQL 9.5 database server.
1月 09 15:42:19 local systemd[1]: Unit postgresql-9.5.service entered failed state.
1月 09 15:42:19 local systemd[1]: postgresql-9.5.service failed.
# /usr/pgsql-9.5/bin/postgresql95-setup initdb
Initializing database ... OK
再度起動し,自動起動設定
# systemctl start postgresql-9.5
# systemctl enable postgresql-9.5
systemctlコマンドについては,こちらの記事に書かれています.
(最後まで読むにはログインが必要)
Red Hat Enterprise Linux 7がやってきた
接続確認
# su - postgres
最終ログイン: 2016/01/09 (土) 17:11:00 JST日時 pts/0
-bash-4.2$ psql
psql (9.5.0)
"help" でヘルプを表示します.
postgres-# \q
-bash-4.2$ exit
ログアウト
初期設定
PostgresSQLの設定ファイルを変更
postgresql.conf
# vi /var/lib/pgsql/9.5/data/postgresql.conf
# 59行目
# listen_addresses = 'localhost'
# 419行目
log_line_prefix = '<%m>'
以下のように変更
(viならetcを押した後に :59
か /listen_addresses
で飛びたい行に移れる)
# 他のホストからのアクセスを受け取る
listen_addresses = '*'
# ログの受け取り形式
# 420行目以降にログの出力形式の一覧がコメントアウトされて載っている
# 今回は '日時 ユーザ データベース' の形式
log_line_prefix = '<%t %u %d>'
pg_hba.conf
# vi /var/lib/pgsql/9.5/data/pg_hba.conf
# 80行目
# "local" is for Unix domain socket connections only
local all all peer
以下のように変更
# DB名とユーザ名が一致しなくても認証できるようにする
# "local" is for Unix domain socket connections only
local all all md5
システムを再起動
# systemctl restart postgresql-9.5
ユーザ設定
スーパーユーザにパスワードを設定
(2017/01/11:この方法でパスワードが設定できなかった場合の対処を追記)
# su - postgres
最終ログイン: 2016/01/09 (土) 18:07:04 JST日時 pts/0
-bash-4.2$ psql
psql (9.5.0)
"help" でヘルプを表示します.
postgres=# \du
ロール一覧
ロール名 | 属性 | メンバー
----------+----------------------------------------------------------------------------------+----------
postgres | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション, Bypass RLS | {}
postgres=# \password postgres
新しいパスワード:
もう一度入力してください:
postgres=# \q
postgresユーザのパスワード設定ができなかった場合
対処1
以下のコマンドでパスワードを設定
# passwd postgres
ユーザー postgres のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
ログインできるか確認
# psql -U postgres
ユーザ postgres のパスワード:
対処2
上記の方法でパスワードが変更できなかった場合は、一度パスワード認証をしなくても PostgreSQL が使える状態にしてから、SQLでパスワードを設定します。
# vi /var/lib/pgsql/9.5/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all all ident
システムを再起動
# systemctl restart postgresql-9.5
SQL でパスワードを変更
# su - postgres
最終ログイン: 2017/01/11 (水) 13:41:15 JST日時 pts/0
-bash-4.2$ psql
psql (9.5.5)
Type "help" for help.
postgres=# ALTER USER postgres PASSWORD 'new_password';
ALTER ROLE
postgres=# \q
-bash-4.2$ exit
logout
pg_hba.conf の設定をもとに戻す
# vi /var/lib/pgsql/9.5/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all all md5
システムを再起動
# systemctl restart postgresql-9.5
ログインできるか確認
# psql -U postgres
ユーザ postgres のパスワード:
テーブル作成とアクセス権限付与のテスト
テスト用のユーザを作成
piyoというユーザを作成
-bash-4.2$ createuser -P piyo
新しいロールのためのパスワード:
もう一度入力してください:
-bash-4.2$ psql
psql (9.5.0)
"help" でヘルプを表示します.
postgres=# \du
ロール一覧
ロール名 | 属性 | メンバー
----------+----------------------------------------------------------------------------------+----------
postgres | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション, Bypass RLS | {}
piyo | | {}
postgres=#\q
DBとテーブルの作成
DBの作成
DBの一覧を確認
-bash-4.2$ psql
psql (9.5.0)
"help" でヘルプを表示します.
postgres=# \dp
アクセス権
スキーマ | 名前 | 型 | アクセス権 | Column privileges | Policies
----------+------+----+------------+-------------------+----------
(0 行)
バージョンを確認
postgres=# select version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 9.5.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4), 64-bit
(1 行)
hogeというDBを作成
postgres=# create database hoge;
CREATE DATABASE
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
hoge | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 行)
テーブルの作成
先ほど作ったDBのhogeに接続し,fugaというテーブルを作成
postgres=# \connect hoge
データベース "fuga" にユーザ"postgres"として接続しました。
hoge=# CREATE TABLE fuga
hoge-# (id int, nick_name character varying(5), full_name text);
CREATE TABLE
hoge=# \dt
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+------+----------+----------
public | fuga | テーブル | postgres
(1 行)
hoge=# \d fuga
テーブル "public.fuga"
列 | 型 | 修飾語
------------+----------------------+--------
id | integer |
nick_name | character varying(5) |
full_name | text |
hoge=#\q
アクセス権限の付与
hoge=# GRANT SELECT, INSERT, UPDATE, DELETE ON fuga TO piyo;
GRANT | {}
qgis=# \dp
アクセス権
スキーマ | 名前 | 型 | アクセス権 | Column privileges | Policies
----------+-------------------------+----------+---------------------------+-------------------+----------
public | fuga | テーブル | postgres=arwdDxt/postgres+| |
| | | piyo=arwd/postgres | |
(1 行)
作成したユーザからアクセスしてSQLを実行
DBへアクセス
$ psql postgres piyo
ユーザ piyo のパスワード:
psql (9.5.0)
"help" でヘルプを表示します.
postgres=> \connect hoge
データベース "hoge" にユーザ"piyo"として接続しました。
SELECT命令
hoge=> select * from fuga;
id | nick_name | full_name
----+-----------+-----------
(0 行)
INSERT命令
hoge=> INSERT INTO fuga (id, nick_name, full_name) VALUES (1, 'NOBU', 'ODA NOBUNAGA');
INSERT 0 1
hoge=> select * from fuga;
id | nick_name | full_name
----+-----------+--------------
1 | NOBU | ODA NOBUNAGA
(1 行)
UPDATE命令
hoge=> UPDATE fuga SET nick_name='NAGA';
UPDATE 1
hoge=> select * from fuga;
id | nick_name | full_name
----+-----------+--------------
1 | NAGA | ODA NOBUNAGA
(1 行)
DELETE命令
hoge=> DELETE FROM fuga WHERE id=1;
DELETE 1
hoge=> select * from fuga;
id | nick_name | full_name
----+-----------+-----------
(0 行)
#参考
CentOS 7にPostgreSQL最新版をインストール
CentOS7.0(Vagrant)にPostgreSQL 9.4インストール
Red Hat Enterprise Linux 7がやってきた
PostgreSQLのユーザ管理
pg_hba.confファイル
initdb
ubuntu - Postgresql: password authentication failed for user "postgres" - Stack Overflow