実践Linux
CentOS5/6.5        CentOS5/6.5 目次へ  TOP(HOME)へ


postgreSQL・データベース(CentOS6.5の場合)   2014年9月





●旧サーバーのPostgreSQLデータベースがある場合は、そのDB全体をバックアップしておく。
# su - postgres
# pg_dumpall > /tmp/all.db
これをUSBメディアなどにコピーしておく。

コピーしておいたバックアップ・ファイルを/tmp/all.dbに置く。

PostgreSQLをテスト使用していた場合は、新規状態にしておく。
 PostgreSQLサービスを停止。
 /var/lib/pgsql/dataを削除。

@データベースクラスタの初期化(インストール後に一度だけ行う。postmasterサービスを起動しないで行う)
# su - postgres
$ initdb -E UTF8 --no-locale -D /var/lib/pgsql/data
$ exit
基本文字コードをUTF8に指定。locale機能は問題を起こしやすいので--no-localeにする。

やり直しをする場合
 PostgreSQLサービスを停止。
 /var/lib/pgsql/dataを削除。

Selinux
# restorcon -RF /var/lib/pgsql

A/var/lib/pgsql/data/pg_hba.confの設定
host all all 192.168.7.0/24 trust の追加。

書式
local 【データベース】 【ユーザー】 【接続許可方法】
host 【データベース】 【ユーザー】 【許可IPアドレス】 【接続許可方法】
【データベース】: all, sameuser, samegroup  (sameuserはユーザーと同名のデータベースということ)
【接続許可方法】 : trust, reject, md5, crypt, password, krb4, krb5, ident, pam

B/var/lib/pgsql/data/postgresql.confの設定
ネットワークからの接続を許可する
   listen_addresses = '*'
   port = 5432
さらにパーティショニング下でのアクセスを高速にするパラメータを有効にする。
   constraint_exclusion = on

Cpostgresqlサービス(postmaster)を起動。

Dバックアップ・ファイルを戻す。
以前のDB全体をバックアップ保存( $ pg_dumpall > /tmp/all.db )している場合は、postmasterを起動してそのall.dbを次のように展開して、データベースやテーブルをpostgreSQLユーザー情報ごと継承できる(createuserで作成するデータベース所有者も自動的に作成される)。
  # su - postgres
  $ psql -f /tmp/all.db template1 (または、$ psql template1 < /tmp/all.db )

Eデータベース所有者のUNIXユーザーを作っておく。
ここでは、例としてuser1を作成。
# useradd -g postgres -s /bin/bash -u 505 user1  (ユーザーID:505。-Mを付けるとホームを作らないが、ホームがないとコマンドを実行するたびに/rootに振られて困ることになる。)
# passwd user1
シェルは最初/bin/bashにしておかないとsuでログインできない=データベース作成のコマンド等が扱えない。データベースを作ってしまえば/sbin/nologinに変更しておいてもよい。

Dでない場合は、最初からpostgreSQLユーザーの登録、データーベースの作成へと進んでいく。
●ユーザーの登録(postgresqlにuser1を登録する)
# su - postgres  postgreSQLの管理者postgresで作業する。
$ createuser user1  (パスワードの設定もしたい場合は、$ createuser -P user1)
スーパーユーザとするか=n
データベース作成権限=y
ロール作成権限(新しいユーザーを追加できるか)=n
パスワードの設定は、pg_passwdコマンドか後述の「設定の変更」で。
ユーザーを削除するには、$ dropuser user1

●データベースの作成
このままマスターのpostgresで作業する場合は、作ったデータベースはpostgresの所有となる。
所有をuser1で作りたい場合は、user1で作業する(ただし、上でyを選択していることが前提)。
# su - user1
$ createdb user1 -E UTF8  普通、ユーザー名と同じ名前を付ける。

$ psql -l で作成したデータベース一覧がわかる。

削除するには、$ dropdb user1


●phpでデータベースにアクセスできるようにする
php-pgsqlのインストール(CentOS6.5の場合、最初はインストールされていない。)
# yum install php-pgsql
すでにhttpdが起動している場合は、httpdの再起動が必要。

selinuxの設定(mysqlの場合は必要なかったが、postgresqlは必要)
# getsebool -a | grep httpd
# setsebool -P httpd_can_network_connect_db 1

/etc/httpd/conf.d/php.confの確認
 AddHandler php5-script .php
 AddType text/html .php
 DirectoryIndex index.php

/etc/php.iniの編集
 今のところなにもしなくても大丈夫なようです。
 これを変更するとhttpdを再起動しておくこと。

言語は、UTF-8で統一しておくとよい。
<head>
<meta http-equiv="Content-Language" content="ja">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>テスト</title>
</head>


●windowsのexcel等からのアクセス  以下詳細はADOのページを参照
サーバー側の準備
@iptablesで5432ポートを開き、相互にやりとりできるようにしておく。
APostgreSQLの設定確認
/var/lib/pgsql/data/postgresql.conf
  ネットワークからの接続を許可する
  listen_addresses = '*'
  port = 5432
/var/lib/pgsql/data/pg_hba.conf
  host all all 192.168.7.0 255.255.255.0 trust 等の確認。
B再起動

Windows8.1
postgreSQLとのやりとり用ドライバODBCの入手
PostgreSQLのODBCドライバは以下のURLからダウンロードできる。
http://www.postgresql.org/ftp/odbc/versions/msi/
最新の32ビット版を入手して、インストール。2014/9現在、psqlodbc_09_03_0300-1.zipが最新。
64ビット版だとうまくいかない。

コントロールパネル→システムとセキュリティ→管理ツール→ODBCデータソース(32ビット)→システムDSN→追加→PostgreSQL Unicode
そのまま、保存。



TOP(HOME)へ

目 次
HOME
 全体のシステム構成&目次


RockyLinux

RockyLinux8.4のインストール

旧サーバーからのデータ移行

ネットワークの設定ほか
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
DHCPサーバー
FTPサーバー
FTPS(FTP over SSL/TLS)
Webサーバー
  アクセス解析ツールAwstats
Mail(Dovecot&Postfix)サーバー
MariaDB(MySQL)サーバー
SSHサーバー
SSHトンネル
SSH+MariaDB+Exel
Sambaサーバー
openVPNサーバー
VNCサーバー(リモートディスクトップ)

systemdとfirewalldについて


CentOS8
CentOS7
CentOS5〜6

SELinux

Cプログラミング


●その他
クラウド Amazon EC2
Raspberry Piで遊ぶ
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く


●趣味の世界
相対性理論
量子力学
群論
熱力学・統計力学
解析力学
物理でつかう数学
超弦理論(ノート作成中)