PostgreSQL

1.PostgreSQLとは
PostgreSQLは、カリフォルニア大学バークレイ校のコンピュータサイエンス学科で開発されたPOSTGRES, Version 4.2をベースにしたオブジェクトリレーショナルデータベース管理システム(ORDBMS)。

2.PostgreSQLのインストールと基本

2.1 動作環境
 VirtualBox仮想マシン
 ホストOS Windows10 
 ゲストOS Ubuntu 16.04

2.2 PostgresSQLのインストール
https://www.postgresql.org/download/
(1)ファイルリポジトリ構成を作成
 $ sudo sh -c ‘echo “deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main” > /etc/apt/sources.list.d/pgdg.list’
(2)リポジトリ署名キーをインポート
 $ wget –quiet -O – https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add –
(3)パッケージリストを更新
 $ sudo apt-get update
(4)最新バージョンのPostgreSQLをインストール
 $ sudo apt-get -y install postgresql
(5)バージョン確認
 $ psql –version
 psql (PostgreSQL) 13.3 (Ubuntu 13.3-1.pgdg16.04+1)

2.3 PostgreSQLのロールとデータベースの使用
(1)postgresユーザにログインする
 ※postgresインストール時にOSのユーザpostgresが自動的に作成される
 $ sudo -i -u postgres
 postgres@****-VirtualBox:~$

(2)データベース一覧の表示
 $ psql -l

(3)データベースの削除
 dropdb <データベース名>
(4)新しいデータベースを作成
 createdb <データベース名>
 $ createdb mydb

(5)データベースに接続
 psql -d <データベース名>
(例)
 $ psql -d mydb
 mydb=#
(6)テーブルの作成

(7)テーブルリスト表示
 postgres=# SELECT * FROM weather;

(8)テーブル一覧の表示
 mydb=# \dt

(9)テーブルのスキーマの詳細表示
 mydb=# \d <テーブル名>

(10)テーブルのレコード追加
 mydb=# INSERT INTO weather VALUES (‘japan tokyo’, 32, 38, 0.50, ‘1998-12-10’);

(11)テーブルのレコード検索
 mydb=# SELECT * FROM weather;
 mydb=# SELECT * FROM weather WHERE city=’japan oosaka’;

(12)テーブルのアクセス権限の表示
 mydb=# \z <テーブル名>

(13)テーブルの削除
 mydb=# drop table <テーブル名>;

(14)PostgreSQLプロンプトの終了
 mydb=# \q

3.PostgresSQLのロールについて
 ロールは操作権限などの役割を示すものでPostgresSQLではユーザ管理はロールで行う。OS上のユーザーとは別に扱われ、OS上のユーザーとロールとの対応は、「pg_hba.conf」ファイルで設定されている。

(1)スーパーユーザpostgresでpsqlを起動して、postgresのDBにログインする
 $ psql -U postgres -d postgres
(2)ロール(user01)を作成する
 postgres=# CREATE ROLE user01;
(3)ログイン権限を与える
 postgres=# ALTER ROLE user01 LOGIN; 
(4)パスワードを設定する
 postgres=# ALTER ROLE user01 PASSWORD ‘1212’;
(5)ロールuser01でデータベースにアクセスする
 postgres@*-VirtualBox:~$ psql -U user01 -d postgres
 psql: エラー: FATAL: ユーザ”user01″で対向(peer)認証に失敗しました
※peer認証とは
 PostgreSQL内のユーザーとUNIXユーザで、ユーザー名が一致していれば認証情報なしでログインできる仕組みで、psql側でユーザーを作るときには同名のUNIXユーザーも追加する必要がある。ここでは、テスト用として認証方法を変更して進める。
pg_hba.confファイル
PostgreSQLに接続するクライアントの認証に関する設定を記述するファイル
$ cd /etc/postgresql/13/main
$ ls -al

(6)user01でpostgresに接続する
 psql -h ホスト名 -p ポート番号 -U ロール名 -d データベース名
 $ psql -h localhost -p 5432 -U user01 -d postgres
 パスワードは前述で設定した’1212′

ホスト名:ローカルホストで動いている PostgreSQL に接続する場合は省略可
ポート番号:デフォルトの値(通常は 5432 )で別の番号を使用するとき以外は省略可
ロール名:省略した場合は OS のユーザー名が使用される

(7)ロール一覧
 =# \du

(8)コマンドプロンプト
 =# スーパーユーザpostgresからデータベースに接続したとき
 => スーパーユーザ以外からデータベースに接続したとき

(9)SQLコマンドの分割入力
 SQLコマンドを実行するときは最後にセミコロン”;”を入力してから、[Enter]キーを押します。セミコロンが入力される前に[Enter]キーを押した場合は入力が分割されたものとして扱われ、コマンドプロンプトが”=#”(”=>”)から”-#”(”->”)に変わります。

4.PostgresSQLのスキーマについて
 スキーマとは、1つのデータベースの中に複数設定することができる名前空間で自由に定義できる。
(1)スキーマ作成
mydb=# create schema <スキーマ名>
(2)スキーマの確認
 mydb=# select current_schema;
(3)スキーマの一覧
 mydb=# \dn

(4)スキーマの変更
 mydb=# set search_path to <schema_name>;

5.PostgreSQLアンインストール
(1)パッケージリストの確認
 postgresqlのパッケージリストを確認
 $ dpkg -l | grep postgres

(2)Postgresパッケージの削除
 $ sudo apt remove –purge postgresql
 $ sudo apt remove –purge postgresql-13
 $ sudo apt remove –purge postgresql-client-13
 $ sudo apt remove –purge postgresql-client-common
 $ sudo apt remove –purge apostgresql-common
 すべて、y、または「はい」で続ける
(3)再起動
 $ shutdown -r now
(4)postgresユーザの削除
 $ sudo userdel postgres

 The end