PostreSQL関連
リポジトリ
PostgreSQL関連のリポジトリがある!
- 各バージョンのPostgreSQLが存在
- phpPgAdminやpgpoolなども存在
- 該当OSで該当PostgreSQLバージョンのリポジトリパッケージをダウンロード
- /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;