“Postgres” özel veritabanı ne için?


18

Üzerinde çalışan çeşitli veritabanları ile bir PostgreSQL sunucum var. Veritabanlarından birine çağrılır postgresve en başından beri oradaydı. İçeride herhangi bir tablo göremedim ve açık bir şekilde hiç kullanmadım, ancak herhangi bir kullanıcının veritabanı içinde tablolar oluşturmasına izin verildiğini fark ettim (bu istediğim şey değil - Yönetici dışında herhangi bir kullanıcının oluşturmasını istemiyorum herhangi bir tablo).

Sunucunun normal çalışması için gerekli özel bir veritabanı bir tür olduğunu hissediyorum, ama tam olarak amacı nedir? Ne tür veriler depolanabilir (veya saklanabilir)? Diğer veritabanlarıyla ilgili meta verileri (ör. information_schema?) Barındırıyor mu? connectBu veritabanına halktan ayrıcalığı iptal edersem kötü bir şey olabilir mi? Ya da düşürürsem?

Yarım saat boyunca googledim, ancak kelime postgreskullanıcı postgresve DBMS'nin kendisi için de kullanıldığından , her zaman tamamen alakasız şeyler aldım .

Yanıtlar:


31

Bu konuda özel bir şey yok. PostgreSQL belgelerinde ( Veritabanı Oluşturma) açıklandığı gibi, başka bir veritabanı oluşturmak için bir veritabanına bağlı olmanız gerekir:

CREATE DATABASEKomutu yürütmek için veritabanı sunucusuna bağlanmanız gerektiğinden, herhangi bir sitedeki ilk veritabanının nasıl oluşturulacağı sorusu devam etmektedir. initdbVeri depolama alanı başlatıldığında ilk veritabanı her zaman komut tarafından oluşturulur . (Bkz. Bölüm 17.2.) Bu veritabanı çağrılır postgres. Böylece ilk "sıradan" veritabanı oluşturmak için bağlanabilirsiniz postgres.

ve Şablon Veritabanlarında :

Not: template1 ve template0adın template1varsayılan kaynak veritabanı adı olmasının ötesinde özel bir durum yoktur CREATE DATABASE. Örneğin, herhangi bir olumsuz etkisi olmadan düşebilir template1ve yeniden yaratılabilir template0. Dikkatsizce bir demet önemsiz şey eklediyse, bu hareket tarzı tavsiye edilebilir template1. (Silmek template1için olması gerekir pg_database.datistemplate = false.)

postgresVeritabanı veritabanı küme başlatıldığında da oluşturulur. Bu veritabanı, kullanıcıların ve uygulamaların bağlanacağı varsayılan bir veritabanıdır. Sadece bir kopyasıdır template1ve gerekirse bırakılabilir ve yeniden oluşturulabilir.


3
Evet. Pratikte, bağlantı kurmak için kullanışlı bir yer olarak genellikle boş ve değişmeden bırakmalısınız. Bu gerçekten PostgreSQL'de bir siğil, PostgreSQL'in diğer DBMS'lerin yaptığı gibi "özellikle hiçbir veritabanına" bağlanmanıza izin vermemesinin bir sonucu.
Craig Ringer

1
Çok teşekkürler, bu iyi bir cevap! Genel kullanıcıların erişimini engelledim postgresve bir şey dışında her şey hala çalışıyor: Alandaki hedefli veritabanını belirtmedikçe pgAdmin III artık bağlanmıyor Maintenance DB. Daha postgresönce veritabanına bağlanmış gibi görünüyor .
R Kiselev

@RKiselev Evet, böyle çalışıyor. Tıpkı ypercube'un yazdığı gibi , bağlanmak için varsayılan veritabanıdır.
Marcin

1
Pgadmin "bakım veritabanı" özelliğine sahiptir. Sadece bağlamak istediğiniz
db'nize

@RKiselev: pgAdmin ve "bakım veritabanı" hakkında: pgAdmin tarafından sorulan Bakım
Erwin Brandstetter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.