1.PostgreSQLとは
PostgreSQLは、カリフォルニア大学バークレイ校のコンピュータサイエンス学科で開発されたPOSTGRES, Version 4.2をベースにしたオブジェクトリレーショナルデータベース管理システム(ORDBMS)。
![](https://region-sys.com/wp-content/uploads/2022/08/image.png)
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:~$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
pqsl --help psql は PostgreSQL の対話型ターミナルです。 使い方: psql [オプション]... [データベース名 [ユーザ名]] 一般的なオプション: -c, --command=コマンド 単一の(SQLまたは内部)コマンドを一つだけ実行して終了 -d, --dbname=DB名 接続するデータベース名(デフォルト: "koba") -f, --file=FILENAME ファイルからコマンドを読み込んで実行後、終了 -l(エル), --list 使用可能なデータベース一覧を表示して終了 -v, --set=, --variable=名前=値 psql 変数 '名前' に '値' をセット (例: -v ON_ERROR_STOP=1) -V, --version バージョン情報を表示して終了 -X, --no-psqlrc 初期化ファイル (~/.psqlrc) を読み込まない -1 (数字の1), --single-transaction (対話形式でない場合)単一のトランザクションとして実行 -?, --help[=options] このヘルプを表示して終了 --help=commands バックスラッシュコマンドの一覧を表示して終了 --help=variables 特殊変数の一覧を表示して終了 入出力オプション: -a, --echo-all スクリプトから読み込んだ入力をすべて表示 -b, --echo-errors 失敗したコマンドを表示 -e, --echo-queries サーバへ送信したコマンドを表示 -E, --echo-hidden 内部コマンドが生成した問い合わせを表示 -L, --log-file=FILENAME セッションログをファイルに書き込む -n, --no-readline 拡張コマンドライン編集機能(readline)を無効にする -o, --output=FILENAME 問い合わせの結果をファイル (または |パイプ)に送る -q, --quiet 静かに実行 (メッセージなしで、問い合わせの出力のみ) -s, --single-step シングルステップモード (各問い合わせごとに確認) -S, --single-line 単一行モード (行末でSQLコマンドを終端) 出力フォーマットのオプション -A, --no-align 桁揃えなしのテーブル出力モード --csv CSV(カンマ区切り)テーブル出力モード -F, --field-separator=文字列 桁揃えなし出力時のフィールド区切り文字 (デフォルト: "|") -H, --html HTML テーブル出力モード -P, --pset=変数[=値] 表示オプション '変数' を '値' にセット (\pset コマンドを参照) -R, --record-separator=文字列 桁揃えなし出力におけるレコード区切り文字 (デフォルト: 改行) -t, --tuples-only 行のみを表示 -T, --table-attr=TEXT HTMLテーブルのタグ属性をセット (width, border等) -x, --expanded 拡張テーブル出力に切り替える -z, --field-separator-zero 桁揃えなし出力のフィールド区切りをバイト値の0に設定 -0, --record-separator-zero 桁揃えなし出力のレコード区切りをバイト値の0に設定 接続オプション: -h, --host=HOSTNAME データベースサーバのホストまたはソケットの ディレクトリ(デフォルト: "/var/run/postgresql") -p, --port=PORT データベースサーバのポート番号(デフォルト: "5432") -U, --username=USERNAME データベースのユーザ名 (デフォルト: "***") -w, --no-password パスワード入力を要求しない -W, --password パスワードプロンプトの強制表示(本来は自動的に表示) 詳細はpsqlの中で"\?"(内部コマンドの場合)または"\help"(SQLコマンドの場合) をタイプするか、またはPostgreSQLドキュメント中のpsqlのセクションを参照のこと。 バグは<pgsql-bugs@lists.postgresql.org>に報告してください。 PostgreSQL ホームページ: <https://www.postgresql.org/> |
(2)データベース一覧の表示
$ psql -l
![](https://region-sys.com/wp-content/uploads/2022/08/image-1.png)
(3)データベースの削除
dropdb <データベース名>
(4)新しいデータベースを作成
createdb <データベース名>
$ createdb mydb
![](https://region-sys.com/wp-content/uploads/2022/08/image-2.png)
(5)データベースに接続
psql -d <データベース名>
(例)
$ psql -d mydb
mydb=#
(6)テーブルの作成
1 2 3 4 5 6 7 8 |
mydb=# CREATE TABLE weather ( city varchar(80), temp_lo int, -- 最低気温 temp_hi int, -- 最高気温 prcp real, -- 降水量 date date ); |
(7)テーブルリスト表示
postgres=# SELECT * FROM weather;
(8)テーブル一覧の表示
mydb=# \dt
![](https://region-sys.com/wp-content/uploads/2022/08/image-4.png)
(9)テーブルのスキーマの詳細表示
mydb=# \d <テーブル名>
![](https://region-sys.com/wp-content/uploads/2022/08/image-5.png)
(10)テーブルのレコード追加
mydb=# INSERT INTO weather VALUES (‘japan tokyo’, 32, 38, 0.50, ‘1998-12-10’);
![](https://region-sys.com/wp-content/uploads/2022/08/image-6.png)
(11)テーブルのレコード検索
mydb=# SELECT * FROM weather;
mydb=# SELECT * FROM weather WHERE city=’japan oosaka’;
![](https://region-sys.com/wp-content/uploads/2022/08/image-7.png)
(12)テーブルのアクセス権限の表示
mydb=# \z <テーブル名>
![](https://region-sys.com/wp-content/uploads/2022/08/image-8.png)
(13)テーブルの削除
mydb=# drop table <テーブル名>;
![](https://region-sys.com/wp-content/uploads/2022/08/image-9.png)
(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
![](https://region-sys.com/wp-content/uploads/2022/08/image-10.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/etc/postgresql/13/main# vi pg_hba.conf (変更前) # Database administrative login by Unix domain socket local all postgres peer # "local" is for Unix domain socket connections only local all all peer ※認証方式 trust:任意のロール名でパスワードなしで接続可能 md5:パスワード認証 peer:Peer認証 peerをtrustに変更 (変更後) # Database administrative login by Unix domain socket local all postgres trust # "local" is for Unix domain socket connections only local all all trust |
(6)user01でpostgresに接続する
psql -h ホスト名 -p ポート番号 -U ロール名 -d データベース名
$ psql -h localhost -p 5432 -U user01 -d postgres
パスワードは前述で設定した’1212′
![](https://region-sys.com/wp-content/uploads/2022/08/image-11.png)
ホスト名:ローカルホストで動いている PostgreSQL に接続する場合は省略可
ポート番号:デフォルトの値(通常は 5432 )で別の番号を使用するとき以外は省略可
ロール名:省略した場合は OS のユーザー名が使用される
(7)ロール一覧
=# \du
![](https://region-sys.com/wp-content/uploads/2022/08/image-12.png)
(8)コマンドプロンプト
=# スーパーユーザpostgresからデータベースに接続したとき
=> スーパーユーザ以外からデータベースに接続したとき
1 2 3 4 5 6 7 8 9 |
# psql -U user01 -d mydb psql (13.3 (Ubuntu 13.3-1.pgdg16.04+1)) "help"でヘルプを表示します。 mydb=> # psql -U postgres -d mydb psql (13.3 (Ubuntu 13.3-1.pgdg16.04+1)) "help"でヘルプを表示します。 mydb=# |
(9)SQLコマンドの分割入力
SQLコマンドを実行するときは最後にセミコロン”;”を入力してから、[Enter]キーを押します。セミコロンが入力される前に[Enter]キーを押した場合は入力が分割されたものとして扱われ、コマンドプロンプトが”=#”(”=>”)から”-#”(”->”)に変わります。
4.PostgresSQLのスキーマについて
スキーマとは、1つのデータベースの中に複数設定することができる名前空間で自由に定義できる。
(1)スキーマ作成
mydb=# create schema <スキーマ名>
(2)スキーマの確認
mydb=# select current_schema;
(3)スキーマの一覧
mydb=# \dn
![](https://region-sys.com/wp-content/uploads/2022/08/image-13.png)
(4)スキーマの変更
mydb=# set search_path to <schema_name>;
5.PostgreSQLアンインストール
(1)パッケージリストの確認
postgresqlのパッケージリストを確認
$ dpkg -l | grep postgres
![](https://region-sys.com/wp-content/uploads/2022/08/image-14.png)
(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