TL; DR: Yeni kullanıcılar publicşemada tablolar oluşturabilir, çünkü insanlar yapamadıklarında çok zor olduğundan şikayet ettiler.
Varsayılanları beğenmediyseniz, muhtemelen ilk yapılandırmayı istediğiniz yeni bir şablon veritabanı oluşturmanız gerekir. Örneğin, şunları yapabilirsiniz:
DROP SCHEMA public;
veya
REVOKE ALL ON SCHEMA public FROM public;
GRANT USAGE ON SCHEMA public TO public;
ekleyin.
İsterseniz publicbir veritabanı üzerinde hakları yok kullanıcı, fazladan şunları yapmalıdır:
REVOKE ALL ON DATABASE mydbname FROM public;
GRANT CONNECT ON DATABASE mydbname TO public;
böylece publickullanıcı şema oluşturamaz veya geçici tablo kullanamaz.
Şahsen, bunu tasarlıyorsam, kullanıcılara TEMPvarsayılan olarak veritabanında doğru veriyorum , ancak CREATE(veritabanındaki şemalar) veya CREATE( publicşemadaki tablolar ) vermezdim . Bunları sahibi için ayırırdım.
Yine de uzun zaman önce yapılmış seçimler ve şimdi bunları değiştirmek oldukça zor.
Olduğu gibi, bir kullanıcı hesabı oluşturmanız ve genellikle de bir veritabanı oluşturmak istediğiniz için PostgreSQL'e başlamanın çok zor olduğu konusunda düzenli şikayetler vardır. Neden sadece otomatik olarak oluşturmuyoruz ve bunu kolaylaştırmak için kimlik doğrulama modu olarak 'güven' olarak ayarlıyoruz? postgresKullanıcı neden parolayı varsayılan olarak kullanmıyor postgres? Neden işletim sisteminde varsa kullanıcıları otomatik olarak oluşturmuyoruz? vb.
Yeni kullanıcılar için bazı gerçek kullanılabilirlik sorunları var - özellikle, çoğu insanın peeryetkinin ne olduğu veya psqlPostgreSQL'i kurduktan sonra neden çalıştıklarının, oturum açtıkları adla hiçbir kullanıcı olmadığını söyledi.
pg_hba.confBir yapılandırma dosyası da dağınık , ancak kullanıcılar SQL düzeyinde oluşturulur. Bu bölünme kullanıcıları karıştırır.
Bununla birlikte, birçok şey, güvenli varsayılanlar ile projenin herkesi mutlu edemeyeceği kolay varsayılanlar arasında uzlaşmalardır.
revoke create on database [databasename] from [username];ve DB şimdi sadece [kullanıcı adı] için gerçekten okunur. Sağ? İyi bir Postgres kitabı okuduğumda bu cevaba tekrar geleceğim :)