&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');