&tag(PostgreSQL/運用);
*目次 [#ka56fc04]
#contents
*関連ページ [#v165c633]
*参考情報 [#n1b5937b]

*ユーザー操作 [#pfe1b866]
-デフォルト管理者はpostgres
-データベースユーザーはシステムアカウントと連携する(/etc/passwdを利用)し、独自に設定することもできる。
-アクセス制御はpg_hba.confで行う?
** ユーザー登録 [#m53d3adc]
***参考情報 [#zdf62ae7]
-[[PostgreSQL利用手引き | ごった煮 - tips about programming and building a server:http://park1.wakwak.com/~ima/freebsd_pgsqlusage.html]]

***基本 [#l873a328]
-ユーザーの生成は、デフォルトのデータベースの管理者postgresにsuして(デフォルトでユーザーpostgresにはパスワードが設定されてないのでルートを経由する)、createuserする。
#pre{{
$ su root
# su postgres
$ createuser sora
$ ...allowd create databases? y
$ ...allowed to add users? y
}}
-sudoを使えば一発で可能
 sudo -u postgres createuser
***ユーザー登録のオプション [#gb3c468e]

-createuser --helpでオプションが表示される。
,-P,パスワードプロンプトの表示
,-D,データベース作成の禁止
,-A,ユーザーの追加を禁止?(ヘルプに表示されず)
**ユーザー削除 [#ec804ec9]
-dropuser ユーザー名で削除できる
#pre{{
$ dropuser sora
}}

**ユーザーの権限設定 [#dbd1dd04]
-管理者で接続(-Uオプションはユーザーの指定)
 psql -U postgres
-以下のコマンドを実行
 select * from pg_roles;       
-例えばデータベースを作成したい場合、rolcreatedbがtになっていないとだめ。ユーザーtomにcreatedb権限を与える場合以下のように実行する。
 alter role tom createdb;

*データベース操作 [#q7ddd792]

**データベース一覧 [#u035277f]

-シェルから実行
 $ psql -l
-またはpsqlを起動し
-またはpsqlを起動し\l(小文字のL)を実行
 $ psql testdb
-\l(小文字のL)を実行
 \l
**データベース生成 [#a75621ba]
-シェルから実行
 $ createdb testdb

*テーブル操作 [#le93bc05]
**テーブル一覧 [#a04472dc]
-DBに接続
-DBに接続し、"\d"コマンドで確認できる。
 $ psql testdb
-"\d"コマンドで確認できる。
 \d

**テーブルの情報を表示 [#p5021541]
-psqlでデータベースに接続する。
 psql -U postgres -d sampledb
-psqlプロンプト内で"\d"コマンドを実行
 \d testtable


*トラブルシューティング [#l1ea9cb9]
**duplicate key value violates unique constraintが発生する。 [#eb8b70db]
-シーケンスがおかしくなっている?[[[PostgreSQL] エラーの対処法「ERROR: duplicate key value violates unique constraint」 | AIDREAM:http://blog.aidream.jp/postgresql/postgresql-trouble-shooting-268.html]]
-psqlで、シーケンスの最後の値を確認
 psql -U postgres -d sampledb
-たとえば、テーブルitemのidが主キーでシリアルの場合
 SELECT last_value from item_id_seq;
-以下のように重複しない値に変更する
 SELECT setval('item_id_seq','1234');

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS