Postgresql’de role, group role, user, schema gibi kavramları daha kolay anlayabilmek adına önce Postresql’de nesne hiyerarşisini bir resim ile kısaca göstermek istedim.

Postgresql-ROLE-USER-SCHEMA

Resimden de anlaşılacağı gibi; initdb yaptımız noktadan itibaren veritabanı clusterımız oluşur,  veritabanı cluster’ın altında ise roller, veritabanları ve tablespaceler vardır. Veritabanı le tablo,index, sequence vb objelerin arasında ise schema diye bir katman vardır.

İlk dikkat etmemiz gereken nokta roller ve tablespacelerin veritabanı ile aynı seviyede olması, yani hemen veritabanı cluster’ın altında olması. Bunun nedeni bir kullanıcı ve tablespace oluşturduğumuzda bu nesnelerin veritabanına ait olmaması yada bir diğer deyişle bu nesneleri globel nesne olması. Buradan şunuda anlayabiliriz roller ve tablespaceleri birden fazla veritabanında kullanabileceğimiz.

İkinci dikkat etmemiz gerekn nokta ise schema kavramı bu kavramı başka bir yazıda detaylıca anlatacağım ama kavram karmaşası olmaması adına kısaca değinmek istiyorum. Öncelikle bir veritabanında bir veya daha fazla schema olabilir, hatta aynı nesne ismi aynı veritabanında farklı schemalarda kullanılabilir. Veritabanlarından farklı olarak schemalar katı bir şekilde ayrılmaz: bir kullanıcı, yetkileri varsa, bağlı oldukları veritabanındaki schemaların herhangi birindeki nesnelere erişebilir. Schemaları  kullanmak istemenin birkaç nedeni vardır:

  • Birçok kullanıcının birbirine müdahale etmeden bir veritabanını kullanmasına izin vermek için.
  • Veritabanı nesnelerini daha yönetilebilir hale getirmek için mantıksal gruplar halinde düzenlemek.
  • Üçüncü taraf uygulamalar, diğer nesnelerin adlarıyla çakışmaması için ayrı schemalara yerleştirilebilir.
  • Schemalar, işletim sistemi düzeyindeki dizinlere benzer, ancak schemalar iç içe olamaz.

PostgreSQL’de ROL Kavramı

Gelelim bugünkü asıl konumuz olan rol kavramına; PostgreSQL, roller kavramını kullanarak veritabanı erişim izinlerini yönetir. Bir rol, rolün nasıl ayarlandığına bağlı olarak bir veritabanı kullanıcısı veya bir veritabanı kullanıcısı grubu olarak düşünülebilir.  Bu koyu yazdığım yer işin can alıcı noktası, Postgresql’de user diye bir kavram yoktur user dediğimiz nesne, rolün LOGIN yetkili halidir. Bu dediğimin anlaşılabilmesi adına 3 farklı nesne oluşturacağım ve daha sonra \du  komutu veya pg_user/pg_roles sistem viewleri ile bu nesnelere bakacağız;

NOT : Rol kavramı, “user” ve ” groups ” kavramlarını kapsar. 8.1’den önceki PostgreSQL sürümlerinde, user ve groups farklı türde varlıklardı, ancak şimdi yalnızca roller var. Herhangi bir rol bir kullanıcı, bir grup veya her ikisi olarak hareket edebilir. (continue reading…)

Loading