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のデータベースサーバーが使えるようになりました。