RSS RSS
tacchiの中身(Ruby on Railsのシステム開発)
2008.05.27
カテゴリ:データベース - サーバー - 役立ちツール

postgresでのユーザ権限付与(psql, grant)

おはようございます。tacchiです。

今日は、postgresでの権限付与について、話したいと思います。
スキーマ単位で権限付与できず、テーブル毎に権限付与しなきゃならないので、テーブル数が増えている場合のDBにユーザ作成して権限付与するのが面倒になってきますよね。
テーブルリストを作成してそのリストに対して、同じgrant文を流すスクリプトを組んだので、良ければ使ってみて下さい。


## grant.sh
#!/bin/sh

DBNAME=${1:?"enter dbname"}
DB_USERNAME=${2:?"enter db username"}
CREATE_USERNAME=${3:?"enter create username"}
COMMAND=${4:?"enter select or 'select,update' or 'select,update,delete' ..."}

# --共通関数定義--
LIST=/tmp/table.lst

psql -U ${DB_USERNAME} -d ${DBNAME} -c "select relname from pg_class where relkind='r' and relnamespace=(select oid from pg_namespace where nspname='public' order by relpages desc);" -t -A > ${LIST}

# コマンド実行
while read line
do
echo psql -U ${DB_USERNAME} -d ${DBNAME} -c \"grant ${COMMAND} on $line to ${CREATE_USERNAME}\;\"
psql -U ${DB_USERNAME} -d ${DBNAME} -c "grant ${COMMAND} on $line to ${CREATE_USERNAME};"
done < ${LIST}

# listファイル削除
rm -f ${LIST}

exit 0

使い方


./grant.sh dbname db_username create_username 'select'
./grant.sh dbname db_username create_username 'select,update,delete'

う。。。 インデントが崩れてる。。。

ブックマークに追加する

.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ブラウザゲーム エインヘリアル
ブラウザゲーム「エインへリアル」
αテスター募集中
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」

プロフィール

tacchi
tacchi
Ruby On Railsでバリバリ開発している会社に勤めてます。
新しい技術に興味もありますし、サーバにも興味ありますので
気になった事が合ったらジャンジャン書いて行きます!

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ