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にユーザーが存在する場合、ユーザーを自動作成しないのはなぜですか?等
新しいユーザーにとっては、真の使いやすさの問題がいくつかあります。特に、ほとんどの人はpeerauthが何であるかわかりpsqlません。
またpg_hba.conf、設定ファイルは面倒ですが、ユーザーはSQLレベルで作成されます。この分割はユーザーを混乱させます。
しかし、多くのことは、安全なデフォルトと簡単なデフォルトとの間の妥協であり、プロジェクトがすべての人を幸せにすることはありません。
revoke create on database [databasename] from [username];と、DBは[username]に対して本当に読み取り専用になります。正しい?私は良いPostgresのブック:)読ん持っているとき、私は再びこの回答に戻ってくる