PowerGres は、オープンソースデータベースとして実績・定評のある PostgreSQL をベースに、より使いやすく、より安心して使用できるように GUI の管理ツールやサポートサービスを付属したデータベース製品です。
コマンドラインに慣れていない Windows ユーザの方でも、PowerGres Manager という便利な GUI の管理ツールを使えば直観的にデータベースの管理・監視・運用ができます。 ここでは、 Windows 7 に PowerGres on Windows 7 のインストールを行うことを前提に、評価版のダウンロードから、インストール、セットアップ、基本的なデータベースの操作までを紹介します。
以下の URL から PowerGres on Windows 7 の評価版をダウンロードします。
https://powergres.sraoss.co.jp/pgweb/s/ja/download/download-onWin.php
評価版は、zip 形式の圧縮ファイルです。zip ファイルを選択した上で、右クリックの「すべて展開」とすると PowerGres7.1-ja というフォルダが作成されます。 インストール、セットアップの方法は、マニュアルにも詳しく記載されています。(マニュアルは、PowerGres7.1-ja\ja\manual\index.html になります。) オンラインマニュアルにもあります。
https://powergres.sraoss.co.jp/manual/onLinux/V70/admin/
インストールは、展開後のフォルダの PowerGres フォルダの Setup.exe を実行します。 ※インストール時のユーザは、Windows の administrator 権限のあるユーザで実行する必要があります。 ウィザード形式のウィンドウ画面にしたがっていけば、簡単にインストールができます。
ポイント1:評価版のライセンスキー入力を求められますので、 Evaluation と入力してください。
ポイント2:インストールするバージョンでインストールするマシンに適切なバージョン(32 Bit, 64Bit)を選択します。※インストールするシステム情報を確認する方法は、「コントロールパネル」 -> 「システムとセキュリティ」-> 「システム」で使用しているオペレーティングシステムが表示されます。
インストールが成功したら、デスクトップに PowerGres 7 のショートカットが作成されますので、それをダブルクリックし PowerGres 管理ツールを起動します。 起動できたら、インストールは成功です。次にセットアップをしていきましょう。
事前に、Windows OS に PowerGres サービス専用アカウント postgres を作成しておきます。PowerGres でのスーパーユーザとなるユーザです。
管理ツールからデータベースを管理するには、「サーバ登録」を行います。 その際、データベースのデータを格納する領域であるデータベースクラスタを初期化します。
「サーバの登録」とは、管理ツールに管理対象のデータベースクラスタを登録する操作のことです。 「ファイル」の「サーバの登録」から、サーバ情報を入力してサーバを登録します。
ラベルには powergres7 と入力します。 ラベルは Windows サービスへの登録時にサービス名として使用されます。 このページで順を追ってセットアップを進めている場合には、データベースクラスタは作成されていないので、「新規データベースクラスタの作成」をチェックしてデータベースクラスタを作成します。 ここでは、以下の登録情報を入力して新規のデータベースクラスタを作成します。
新規データベースクラスタの作成情報 | ||
---|---|---|
設定項目 | 設定値 | 設定項目の説明 |
ラベル | powergres7 | ラベルとは、Windows のサービス名として登録されるものです。 |
ポート | 5432 | ポート番号のことです。複数のサーバが存在した場合、このポート番号が重複しないようにします。 |
データベースディレクトリ | C:\data_1 | データベースクラスタのディレクトリになります。 |
文字エンコーディング | UTF8 | データベース側のデフォルトの文字エンコーディングになります。 |
スーパユーザ名 | postgres | デフォルトの postgres を使用します。こちらで指定したユーザが PowerGres のスーパユーザになります |
パスワード | 任意 | スーパーユーザにパスワードを設定しています |
「initdb を実行するユーザを選択してください」とユーザ選択画面が表れますので、Windows OS で作成した、PowerGres サービスアカウント用である postgres を選択します。 initdb とはデータベースクラスタを作成するためのコマンドです。
ポイント1:データベースの文字エンコーディングは、日本語を使用する際には、 UTF-8, EUC-JP を使用するのが一般的です。
サーバの登録が終わると、左のボックスに管理ツールにサーバが登録され、クリックすると「サーバ情報」を見ることができます。
次に「サービス」をクリックし、「PowerGresをWindowsサービスとして登録」をクリックします。 Windows サービスへの登録により Windows 起動時に PowerGres が自動的に起動するようになります。
ここで「サービスを起動」をクリックし、 PowerGres サーバを起動します。
正常にサービスが起動すると、「サービスを起動」ボタンがグレーアウトした状態になります。
ロール(ユーザ)を作成しましょう。
スーパーユーザ(postgres)でもデータベースを操作できますが、スーパーユーザには全てについて権限があります。 従って、セキュリティや誤操作防止の観点から、スーパーユーザとは別に一般ユーザ (のロール) を作成し、通常の操作を行うべきです。
ロールという概念は、ユーザとグループをまとめたものです。PowerGres ではログイン権限やデータベースオブジェクトへの各権限などをロール単位で設定します。 PowerGres のスーパーユーザ postgres は最初から作成されていますが、まだ一般ユーザはまだ作成していないので存在しません。
「オブジェクト」の「ロール」を見ると、ロールが確認できます。
データベースの作成権限のある一般ユーザを作成したいので、「ロールを作成」をクリックします。
ロール作成画面でここでのロールは、以下の情報とします。
ロール作成項目 | 設定値 |
---|---|
ロール名 | testuser |
パスワード | 任意 |
ログイン権限 | あり |
スーパーユーザ権限 | なし |
データベース作成権限 | あり |
ロール作成権限 | なし |
testuser を作成すると、このように表示されます。
一般ユーザ testuser でデータベースを作成してみましょう。 データベースクラスタ data_1 のデータベースを見るには、「オブジェクト」の「データベース」をクリックすると一覧で出力されます。 この時、3 つのデータベースが既に存在します。※ initdb 時に postgres, template0, template1 が自動的に作成されます。 それぞれ postgres が PostgreSQL 自身を管理するデータベース、template0, template1 がこれから作成するデータベースの雛型データベースになります。
「オブジェクト」の「データベースを作成」をクリックすると、データベースを作成する事ができます。 以下の情報で作成します。
psql でデータベースに接続してみましょう。 psql はデータベースに接続して SQL を実行するためのプログラムです。
「その他ツール」から「psql コマンドラインツールを実行」をクリックします。
psql を起動すると、以下のターミナルが立ち上がります。 その際、パスワードの入力が求められます。サーバの登録時にスーパーユーザ postgres に設定したパスワードを入力します。
psql のプロンプトで PowerGres のスーパーユーザは =# 、一般ユーザは => で違いがあります。画面はスーパユーザが postgres データベースに接続している状態です。なお、 \q で終了します。 psql には SQL 以外にも psql 内のみで使える便利なバックスラッシュコマンド(メタコマンド)があります。 主なバックスラッシュコマンドは、以下のとおりです。その他のバックスラッシュコマンドは、 psql を使っていく中で紹介していきます。
主なバックスラッシュコマンド | |
---|---|
コマンド | 意味 |
\? | コマンド一覧 |
\c databasename [username] | 新しい接続で他のデータベースに接続。ユーザ名も付けるとそのユーザで接続 |
\h [SQL] | SQL のヘルプ |
\d [t|i|s|v|S] | テーブル、インデックス、シーケンス、システムテーブルの一覧 |
\l | データベース一覧 |
\d [NAME] | 指定したテーブル、インデックス、シーケンスなどの定義を表示 |
\dT | データ型の一覧 |
\df | 関数の一覧 |
それでは、上記の \c コマンド を使って 先ほど作成したデータベース testdb に接続してみましょう。その後、SET ROLE 文でロールをスーパーユーザから、一般ユーザ用のロール testuser に変えてみましょう。
postgres=# \c testdb testdb=# SET ROLE testuser;
ポイント1: RESET ROLE で元のロールであるスーパーユーザ postgres に戻れます。
testdb に接続ができたら、 \d でまずテーブルを確認してみましょう。まだ testdb にはテーブルを作成していなので、以下のようなメッセージが出ます。
SQL を実行する前に、文字エンコーディングについて少し触れておきます。
データベースの文字エンコーディングは、データベース作成の時に UTF8 に指定しました。クライアントの文字エンコーディングは、デフォルトではデータベースと同じ UTF8 となります。しかし、Windows OS では文字エンコーディングが UTF8 のままでは日本語が文字化けしてしまうため、ここで設定します。
現在のクライアント文字エンコーディングを確認するには、\encoding を実行します。
\encoding
実行すると現在 UTF8 になっています。ここでは、Windows の文字エンコーディングである \encoding SJIS に設定しなおします。
\encoding sjis
ポイント2:バックスラッシュコマンドで変更したパラメータは、永続的なものではなくその接続内だけ有効になります。
psql 上で、SQL を実行し、簡単なテーブルを作成してみましょう。ここでは、社員テーブル employee を作成します。下の CREATE TABLE 文で 4 つのカラムを持ったテーブルを定義しています。
CREATE TABLE employee ( number int, -- 社員番号 name text, -- 名前 position text, -- 役職 date_of_hire date -- 入社日 );
\d で employee テーブルを確認してみましょう。
\d employee
SQL の基本となる 4つの構文 INSERT, SELECT, UPDATE, DELETE をそれぞれ実行して、データの投入から削除まで行います。
社員テーブル employee が定義できたら、INSERT 文で以下のデータを登録していきましょう。
INSERT INTO employee VALUES (1981352, '吉本 勘兵衛', 'staff', '1998-04-01'); INSERT INTO employee VALUES (1782822, '長崎 一郎', 'chief', '1978-10-01'); INSERT INTO employee VALUES (2081577, '山田 太郎', 'staff', '2008-04-01'); INSERT INTO employee VALUES (1851139, '大村 祐子', 'chief', '1985-04-01');
テーブルへのデータの登録が済んだら、 SELECT 文で確認してみましょう。
SELECT * FROM employee;
UPDATE 文でデータの更新を行いましょう。社員番号 1981352 の吉本さんの役職が、マネージャ(manager)に昇進しました。データの更新を行っていきます。注意しなければならないのは、WHERE 句で条件を指定しないとすべての行が更新されてしまいます。吉本さんの社員番号を元に条件を指定しています。
UPDATE employee SET position = 'manager' WHERE number = 1981352;
DELETE 文で削除を行いましょう。社員番号 1851139 の大村さんが退職する事になりました。こちらも、UPDATE 文の時と同じように WHERE 句で条件を絞りこんでから削除をします。
DELETE FROM employee WHERE number = 1851139;
SELECT 文で確認してみましょう。
吉本さんが manager へ、大村さんが削除されている事がわかります。
SQL 基本 4 構文 | ||
---|---|---|
データの操作 | SQL | 構文例 |
登録 | INSERT 文 | INSERT INTO employee VALUES (1981352, ‘吉本 勘兵衛’, ‘staff’, ‘1998-04-01’); |
検索 | SELECT 文 | SELECT name FROM employee; |
更新 | UPDATE 文 | UPDATE employee SET position = ‘manager’ WHERE number = 1981352; |
削除 | DELECT 文 | DELETE FROM employee WHERE number = 1851139; |
ここまで、psql を使いテーブルを作成、SQL の基本構文を使いテーブル内のデータ操作を簡単に説明しました。次回はデータベースのメンテナンス作業のひとつであるバックアップ、リストアを実際にやってみましょう。