TL; DR:新しいユーザーはpublic
スキーマでテーブルを作成できます。人々は、それができなかったのは難しすぎると不平を言ったからです。
デフォルトが気に入らない場合は、おそらく、必要な初期構成で新しいテンプレートデータベースを作成する必要があります。たとえば、次のことができます。
DROP SCHEMA public;
または
REVOKE ALL ON SCHEMA public FROM public;
GRANT USAGE ON SCHEMA public TO public;
テンプレートで。
必要に応じてpublic
データベースに何の権限を持たないようにユーザーに、あなたは、さらにすべき:
REVOKE ALL ON DATABASE mydbname FROM public;
GRANT CONNECT ON DATABASE mydbname TO public;
public
ユーザーがスキーマを作成したり、一時テーブルを使用したりできないようにします。
個人的に、これを設計TEMP
している場合、デフォルトでユーザーにデータベースに対する権限を与えますが、CREATE
(データベースCREATE
内のpublic
スキーマ)または(スキーマ内のテーブル)には与えません。所有者のためにそれらを予約します。
しかし、それらはずっと前に行われた選択であり、それらを今変更することはかなり難しいです。
現状では、ユーザーアカウントを作成する必要があり、多くの場合データベースも作成する必要があるため、PostgreSQLを使い始めるのが難しいという不満が定期的にあります。なぜそれらを自動作成し、それを簡単にするために認証モードとして「trust」にデフォルト設定しないのですか?postgres
ユーザーがデフォルトでパスワードを持たないのはなぜpostgres
ですか?OSにユーザーが存在する場合、ユーザーを自動作成しないのはなぜですか?等
新しいユーザーにとっては、真の使いやすさの問題がいくつかあります。特に、ほとんどの人はpeer
authが何であるかわかりpsql
ません。
またpg_hba.conf
、設定ファイルは面倒ですが、ユーザーはSQLレベルで作成されます。この分割はユーザーを混乱させます。
しかし、多くのことは、安全なデフォルトと簡単なデフォルトとの間の妥協であり、プロジェクトがすべての人を幸せにすることはありません。
revoke create on database [databasename] from [username];
と、DBは[username]に対して本当に読み取り専用になります。正しい?私は良いPostgresのブック:)読ん持っているとき、私は再びこの回答に戻ってくる