このエントリーをはてなブックマークに追加


CygwinでPostgreSQLを実行する手順

「Windows環境を汚したくないなぁ。そうだ!CygwinのPostgreSQLパッケージをインストールして動かそう」
と思って作業をした備忘録になります。
サービス(デーモン)として動かすのではなく、
Cygwin Terminalからコマンドで実行、操作、停止までの手順となります。

postgresユーザーなども作成せず、まずはCygwin上でPostgreSQlを動かして試したい。
PostgreSQLをサービスに登録したくない!という人には役に立つかも!?


使用環境

  • Windows 10 ver.1909 64bit
  • Cygwin バージョン
    $ uname -r
    3.1.2(0.340/5/3)

PostgreSQLのインストール

PostgreSQLはCygwinが提供しているパッケージをインストールしました。
インストール手順は、setup-x86_64.exe を起動して postgresql パッケージをインストールしました。

  1. View を Full にします。
  2. Search に postgresql を入力します。
  3. postgresql をクリックします。
  4. ▼をクリックし、12.1-1 を選択しました。
  5. 「次へ」ボタンをクリックしインストールします。
    01.png
     
  6. 以下の画面が表示されるので、「次へ」ボタンをクリックするとインストールが開始されます。
    02.png
     
  7. インストール中はプログレスバーが表示されます。
  8. 完了画面のキャプチャになります。
    完了ボタンを押せば postgresql パッケージのインストールは完了です。
    03.png

Cygwin Terminal を起動し PostgreSQLを起動するまで

以下、Cygwin Terminal を起動し、PostgreSQLを起動するまでの手順となります。

  1. Cygwin Terminal を管理者権限で起動します。
  2. cygserver-config コマンドを実行し、サービスに登録します。
    cygserver-config
  3. 以下のようなメッセージが表示されるので、途中、yes を入力しEnterキーを押します。
    $ cygserver-config
    Generating /etc/cygserver.conf file
    
    
    Warning: The following function requires administrator privileges!
    
    Do you want to install cygserver as service?
    (Say "no" if it's already installed as service) (yes/no) yes
    
    The service has been installed under LocalSystem account.
    To start it, call `net start cygserver' or `cygrunsrv -S cygserver'.
    
    Further configuration options are available by editing the configuration
    file /etc/cygserver.conf.  Please read the inline information in that
    file carefully. The best option for the start is to just leave it alone.
    
    Basic Cygserver configuration finished. Have fun!
    cygserverをサービスに登録しないとPostgreSQLが起動しません&以下のようなエラーが表示されます。
    $ /usr/sbin/initdb.exe -D $HOME/pgdata
    <snip>
    ブートストラップスクリプトを実行しています ... 2019-12-23 20:23:08.986 JST [994] FATAL:  共有メモリセグメントを作成できませんでした: Function not implemented
    2019-12-23 20:23:08.986 JST [994] 詳細:  失敗したシステムコールはshmget(key=5432001, size=56, 03600)です。
    子プロセスが終了コード1で終了しました
    <snip>
  4. PostgreSQLを以下の手順で起動します。
    Cygwin Terminalを管理者権限で起動する必要はありません。
  5. cygserverを起動します。
    $ /usr/sbin/cygserver &
    以下のメッセージが表示されれば成功です。
    cygserver: Initialization complete.  Waiting for requests.
  6. PostgreSQLを起動するためにデータベース初期化コマンド initdb を実行します。
    上記メッセージが表示されプロンプト($)が表示されていないように見えますが、プロンプト($)表示後メッセージが表示されています。
    なので、Enterキーを押せばプロンプト($)のみが表示されます。
    $ /usr/sbin/initdb -D $HOME/pgdata
    本記事では、ホームディレクトリ直下にデーベースを作成します。
    以下、実際にinitdbを実行して出力されたものです。
    $ /usr/sbin/initdb -D $HOME/pgdata
    データベースシステム内のファイルの所有者はユーザ"sakura"となります。
    このユーザをサーバプロセスの所有者とする必要があります。
    
    データベースクラスタはロケール"ja_JP.UTF-8"で初期化されます。
    デフォルトのデータベース符号化方式はそれに対応してUTF8に設定されました。
    initdb: could not find suitable text search configuration for locale "ja_JP.UTF-8"
    デフォルトのテキスト検索構成は simple に設定されます。
    
    データベージのチェックサムは無効です。
    
    ディレクトリ/home/sakura/pgdataを作成しています ... ok
    サブディレクトリを作成しています ... ok
    動的共有メモリの実装を選択しています ... posix
    デフォルトのmax_connectionsを選択しています ... 20
    デフォルトの shared_buffers を選択しています ... 128MB
    selecting default time zone ... Asia/Tokyo
    設定ファイルを作成しています ... ok
    ブートストラップスクリプトを実行しています ... ok
    ブートストラップ後の初期化を実行しています ... ok
    データをディスクに同期しています ... ok
    
    initdb: 警告: ローカル接続に対して"trust"認証を有効にします
    pg_hba.confを編集する、もしくは、次回initdbを実行する時に -A オプション、
    あるいは --auth-local および --auth-host オプションを使用することで変更する
    ことがきます。
    
    成功しました。以下のようにしてデータベースサーバを起動することができます:
    
        /usr/sbin/pg_ctl -D /home/sakura/pgdata -l ログファイル start
    
  7. PostgreSQLを起動します。
    /usr/sbin/pg_ctl -D $HOME/pgdata -l /tmp/postgresql.log start
    ログは/tmpに出力するように設定し起動しています。
    $ /usr/sbin/pg_ctl -D $HOME/pgdata -l /tmp/postgresql.log start
    サーバの起動完了を待っています....完了
    サーバ起動完了
    上記のように出力されれば PostgreSQL の起動は成功です。

データベース作成とユーザー作成

PostgreSQLが起動したのでデータベースとユーザーを作成します。

  1. 以下のコマンドでは、データベース名 sakuradb を作成します。
    /usr/bin/createdb sakuradb
    何も表示されず、プロンプト($)が表示されれば成功です。
  2. データベースが作成されたかをコマンドで確認しています。
    確認作業なので、本コマンド実行は必須ではありません。
    $ psql -l
                                        データベース一覧
       名前    | 所有者 | エンコーディング |  照合順序   | Ctype(変換演算子) |  アクセス権限
    -----------+--------+------------------+-------------+-------------------+------------------
     postgres  | sakura | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
     sakuradb  | sakura | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
     template0 | sakura | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/sakura       +
               |        |                  |             |                   | sakura=CTc/sakura
     template1 | sakura | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/sakura       +
               |        |                  |             |                   | sakura=CTc/sakura
    (4 行)
    sakuradbが存在しているのが確認できます。
  3. データベースに接続し、ユーザ名 user1, パスワード pass1 を以下の手順で作成します。
  4. 以下のコマンドで作成した sakuradb に接続します。
    psql sakuradb
    成功すると以下のメッセージが出力されます。
    $ psql sakuradb
    psql (12.1)
    "help"でヘルプを表示します。
    
    sakuradb=#
  5. 以下の構文でユーザーを追加することができます。
    CREATE USER ユーザ名 WITH PASSWORD パスワード ;
    実際に user1 / pass1 でユーザを登録します。
    sakuradb=# create user user1 with password 'pass1';
    CREATE ROLE
  6. 以下のコマンドでユーザ一覧を表示して確認します。
    sakuradb=# select usename from pg_user;
    usename
    ---------
    sakura
    user1
    (2 行)
  7. psqlコマンド \q で終了します。
    sakuradb=# \q
    
    $

作成したユーザーでデータベースに接続してみる

作成した user1 ユーザーで接続しテーブル作成および行追加をしてみます。

  1. 作成したユーザーでデータベースに接続。
    $ psql -U user1 sakuradb
    psql (12.1)
    "help"でヘルプを表示します。
    
    sakuradb=>
  2. テーブル作成、行追加、行クエリーを実行しました。
    sakuradb=> create table t1 (a int, b int);
    CREATE TABLE
    sakuradb=> insert into t1 values(1,1),(2,2);
    INSERT 0 2
    sakuradb=> select * from t1;
     a | b
    ---+---
     1 | 1
     2 | 2
    (2 行)
    
    sakuradb=> \q

データベースの停止とcygserverの停止

以下に PostgreSQLの停止とcygserverの停止手順を記します。

  1. 以下のコマンドでPostgreSQLを停止させます。
    起動時はstartだったところをstopにするだけです。
    $ /usr/sbin/pg_ctl -D $HOME/pgdata/ stop
    サーバ停止処理の完了を待っています....完了
    サーバは停止しました
  2. cygserverを以下のコマンドで停止させます。
    /usr/sbin/cygserver --shutdown
    実際にコマンドを実行した時の出力です。
    $ /usr/sbin/cygserver --shutdown
    cygserver: Shutdown finished.

cygserverのアンインストール(Cygwinをアンインストールする場合)

cygserverはサービスに登録されています。
Cygwinをアンインストールする前に、以下のコマンドでcygserverサービスを削除してください。
(管理者権限でCygwin Terminalを起動してください)

  1. 登録されているサービスを以下のコマンドで確認します。
    cygrunsrv -L
  2. 以下のコマンドでcygserverサービスを削除します。
    cygrunsrv --remove cygserver

以上、CygwinでPostgreSQLを起動する手順でした。



添付ファイル: file03.png 332件 [詳細] file02.png 354件 [詳細] file01.png 378件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-12-24 (火) 13:01:39