がらくたネット


PostreSQL関連

PostreSQL関連

リポジトリ

PostgreSQL関連のリポジトリがある!

  • 各バージョンのPostgreSQLが存在
  • phpPgAdminやpgpoolなども存在

リポジトリHP

  1. 該当OSで該当PostgreSQLバージョンのリポジトリパッケージをダウンロード
  2. /etc/yum.repos.dにリポジトリデータがインストールされる
  • 規定ではリポジトリが有効
  • 既存リポジトリからPostgreSQL関連を止める必要あり
    /etc/yum.repos.d/CentOS-Base.repoの[base]と[updates]セクション
    exclude=postgresql* ← 最終行に追加

phpPgAdminをリポジトリからインストールすると管理が…

  • /etc/phpPgAdminに設定ファイル
  • /usr/share/phpPgAdminに本体
  • /etc/httpd/conf.d/phpPgAdmin.confが作成され
  • 規定で127.0.0.1からの接続のみ許可 ← phpPgAdmin.confの<Location>ディレクティブにて

SLでPostgreSQL91をインスト

Scientifix Linuxで標準リポジトリからPostgreSQL Serverをインストールした状態から
Postgresql.orgが提供している最新版PostgreSQL Serverをインストールする方法

wget http://yum.postgresql.org/9.1/redhat/rhel-6-x86_64/pgdg-sl91-9.1-6.noarch.rpm
rpm -ihv pgdg-sl91-9.1-6.noarch.rpm
vi /etc/yum.repos.d/sl.repo
[sl]セクションの最後に下記追記
exclude=postgresql*
 
 
service postgresql stop
rpm -e postgresql postgresql-devel postgresql-server postgresql-contrib \
 postgresql-libs php-pgsql
全て削除される、dataディレクトリは残ったまま
yum install postgresql91 postgresql91-devel postgresql91-server \
 postgresql91-contrib postgresql91-libs
yum install php-pgsql
service postgresql-9.1 initdb
service postgresql-9.1 start
chkconfig postgresql-9.1 on

この状態だと、Postgresql9.1のデータベースディレクトリは
/var/lib/pgsql/9.1/dataとなるので、既存情報は引き継がない

元々の8.4.xがインストールされていたdataディレクトリを指定すると

古いバージョンのデータベースフォーマットが見付かりました。
PostgreSQL を使う前にデータのフォーマットをアップグレードする必要があります。
より詳細な情報は (Your System's documentation directory)/postgresql-9.1.3/README.rpm-dist を見てください。
とか怒られて、アップグレード処理が必要となる。

DBの利用容量を確認する

  • postgresユーザでoid2nameを実行
  • yumパッケージではpostgresql-contribが必要

# su - postgres
$ oid2name

  • OidとDatabase Name、Tablespaceの一覧が表示される
  • このOidとDatabase Nameを元にPostgresのDBディレクトリに対してduなどを実行するとDBが利用しているファイルサイズがわかる

$ du -h /var/lib/pgsql/data/base

  • SELECT分でもoidとdatnameの一覧が表示できる
    SQL> SELECT oid, datname from pg_database;

8.4系だとテーブル作成するだけで、5.4MByte(5520Byte)利用中とかなります。

これをchk_pgdisk.shとファイルに保存して
du /var/lib/pgsql/data/base | \
grep \/`oid2name -q | grep " $1 " | awk '{print $1}'`$ | \
awk '{print $1}'
 
sh chk_pgdisk.sh <DB名>
とかするとパスワードを聞かれた後、使用量がバイト表記で表示されます。

権限

ロールの権限

権限を与える

ロール「joe」にaccountsテーブルに対してUPDATE権限を与える
GRANT UPDATE ON accounts TO joe;

権限を取り上げる

REVOKE INSERT ON accounts FROM joe;