PostgreSQLを使ってみた

LinuxサーバーにPostgreSQL

サーバーを構築する際、「LAMPで」という指定のしかたがあります。

LAMPは、 OSがLinux、WebサーバーとしてApache、データベースとしてMySQLかMariaDB、その他、動的なページを作成するため、Perl、PHP、Pythonといったプログラム言語が動作するサーバー構成の事で、L.A.M.Pと頭文字をとって、LAMPサーバーです。

このうち、データベースがMySQLなのは、無料で使用できるSQLとしては、トップシェアのためです。

データベースのシェアは、1位がOracle Database 2位がMySQL、3位がMicrosoft SQL Server となっています。
このうち、OracleとSQLServerは有料で、ものすごく高価ですから、無料で使えるものとしては、MySQLがトップですね

今回のPostgreSQLは、シェアではMicrosoft SQL Serverに次ぐ4位のデータベースエンジンで、けっこう使用したシステムにあたることがあります。

CentOS8 のインストール

今回は、LinuxサーバーにPostgreSQLをインストールしてみます。

ダウンロードサイトからisoファイルをダウンロードします。

CentOS-8.3.2011-x86_64-dvd1.iso を選択するとダウンロードできます。

ダウンロードが完了したら、VMwareで仮想マシンを作成し、その仮想マシンにインストールします。

仮想マシンの作成については、Oracleデータベースのインストールで行った通りです。

仮想マシンがCD/DVDに設定したISOを読み込んで立ち上がります。

GUI画面が立ち上がったら、まず言語を日本語に設定します。

仮想マシンなので、右が少し切れています。
ストレージとユーザーに警告が表示されています。

ストレージは、そのまま選択すればOKです

rootの設定と、ユーザーの作成を要求されています。

rootのパスワード設定です。

ユーザーが必要なので、一人作成します。

ソフトウェアは、サーバー(GUI使用)を選択します。

ネットワークをONに変更します。

設定の先で、自動接続を選択します

エラー項目がなくなったのでインストール開始します

インストール開始して、暫く待ちます。完了したらシステムの再起動をクリックします。

再起動が完了すると、ライセンス契約を求められます。

同意をチェックして、完了のボタンを押します。

正常に起動しました。

一番最初の起動時は、初期設定があります。入力や言語などを設定します。プライバシーをオフにする以外は、ほぼデフォルトです。

初期設定します。
アクティビティから設定をクリックするか電源ボタンの並びに設定を開くアイコンがあります。

Privacy をクリックし、画面ロックをクリックするとダイアログが開くので、自動画面ロックをオフにします。こうしないと数分で画面がロックされ煩わしいです

Powerをクリックし、ブランクスクリーンをしないに変更します。これも数分で画面がブラックアウトするのを防ぐためです。

dnf -y upgrade でシステムを最新化します

PostgreSQLのインストール

CentOS8 のサーバーが構築出来ていれば、PostgreSQLのインストールは簡単です。

dnf module -y install postgresql

で簡単にインストールできます。

systemctl enable --now postgresql

でこのサーバーが起動すると自動的にPostgreSQLも起動するようにします。

dnfでインストールした際、自動的にpostgresというユーザーが作成されています。

# su - postgres

$ psql -U postgres
psql (10.15)
"help" でヘルプを表示します。

postgres=#

これで、PostgreSQLに接続できました。

以前に、MySQLデータベースを構築した記事で作ったテーブルを作成してみます。

postgres=# CREATE TABLE wholesale (
     serial SERIAL NOT NULL
    ,"仕入先" varchar(25)
);

postgres=# CREATE INDEX on wholesale(serial);
postgres=# \dt
              リレーション一覧
 スキーマ |   名前    |    型    |  所有者
----------+-----------+----------+----------
 public   | wholesale | テーブル | postgres
(1 行)

postgres=# \d wholesale
                                      テーブル "public.wholesale"
   列   |          型           | 照合順序 | Null 値を許容 |                デフ
ォルト
--------+-----------------------+----------+---------------+--------------------
-----------------------
 serial | integer               |          | not null      | nextval('wholesale_
serial_seq'::regclass)
 仕入先 | character varying(25) |          |               |
インデックス:
    "wholesale_serial_idx" btree (serial)

postgres=# INSERT INTO wholesale (仕入先) VALUES ('鈴木屋');
INSERT 0 1
postgres=# INSERT INTO wholesale (仕入先) VALUES ('佐藤青果');
INSERT 0 1
postgres=# SELECT * FROM wholesale;
 serial |  仕入先
--------+----------
      1 | 鈴木屋
      2 | 佐藤青果
(2 行)

postgres=# \q
[postgres@centos8_01 ~]$

外部接続を可能にする設定

今回はLinuxサーバーにインストールしましたので、このままではそのLinuxサーバー以外からは使用できません。

このため、データベースを外部から接続できるようにします。

# vi /var/lib/pgsql/data/postgresql.conf

上記コマンドで、postgresql.confを編集します。

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

localhostを*に書換えて、#を外します。

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'                  # what IP address(es) to listen on;

# vi /var/lib/pgsql/data/pg_hba.conf

上記コマンドで、pg_hba.confを編集します。

# "local" is for Unix domain socket connections only
local   all             all                                     peer

接続するWindows10パソコンのIPを登録します。今回の場合、192.168.1.10のパソコンからの接続です。

# "local" is for Unix domain socket connections only
local   all             all                                     peer
host    all             all             192.168.1.10/32         md5

デフォルトでは、postgresユーザーにはパスワードが設定されておらず、また、データベースのpostgresユーザーもパスワードを持っていません。

このため、Linuxユーザーとしてのpostgresと、データベースユーザーのpostgresにパスワードを与えます。

ルートユーザーで、passwdコマンドを実行し、パスワードを設定します。

# passwd postgres
ユーザー postgres のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:

次に、psql -U postgresでpostgresqlに接続し、postgresのパスワードを設定します。

当然ですが、これは仮想マシンを使ってのテスト機で、実務に使わないため、簡単なパスワードですが、実際に使用するときはもっと複雑なものである必要があります。

postgres=# alter role postgres with password 'passwd';

修正が完了したら、PostgreSQLを再起動します。

# systemctl restart postgresql

PostgreSQLのODBCをインストールする

Linuxのサーバー機にインストールしましたので、同じLAN上にあるマシンから接続できるようにします。

ダウンロードサイトからODBCドライバをダウンロードします。

ここからインストールしたバージョンにあったドライバをダウンロードします。

今回は psqlodbc_10_03_0000-x64.zip を選択しました。

zipファイルを解凍すると、インストール用のファイルが出てきますので、実行します。

ほぼ全部、デフォルトの通りにしました。

これで、ODBCドライバのインストールが完了したので、データソースを作成します。

ODBCでデータを取り出す

インストールとデータソースが完了すれば、ExcelなどにODBCでデータを取り出す事ができます。

作成したデータソースを指定します。

Excelにデータを読み込めました。

A5M2で接続してみる

SQLクライアントのA5M2に繋いでみます。

データベースを追加します。

PostgreSQLの直接接続を選択します。

サーバー名、ユーザー名、パスワードなどを設定します。

接続先の選択画面がでます。

接続できました。

PostgreSQLのデータベースサーバーが使えるようになりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です