PostgreSQL Superuser vermeden backup almak
PostgreSQL de veritabanın güvenliği için kullanıcıların yetkilerini sınırlamak isteyebiliriz. Bunun gibi durumlarda farklı bir kullanıcı oluşturarak veritabanında sadece belirli yetkileri vererek başka işlemler yapmasının önüne geçmiş oluruz.
PostgreSQL de backup alırken çoğu kullanıcının yaptığı yanlışlardan bir tanesi de backup kullanıcısı oluşturulup bu kullanıcıya superuser verilmesidir. SuperUser postgresql de en yetkili kullanıcıdır ve bu kullanıcıyı ele geçiren kötü niyetli kullanıcılar istenilen bütün her şeyi yapabilir. Buna benzer durumların önüne geçmek için postgresql de bir kullanıcı oluşturarak yedeği alınmak istenen veritabanında yetki tanımlamasının önüne geçilmiş olur.
İlk olarak yedek almak için kullanacağımız userı oluşturalım.
CREATE USER backup_user WITH PASSWORD 'PasSWord1+' LOGIN;
Oluşturduğumuz kullanıcıya ilgili veritabanında yetki tanımlayalım.
GRANT CONNECT ON DATABASE pagila to backup_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO backup_user;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO backup_user;
Yukarıdaki tablo ve sequence için yetki tanımladık fakat sizin veritabanınızda farklı objeler varsa onların da yedeği alınması için yetki tanımlayabilir ve yedeği alınmasını istediğiniz kullanıcıya sadece gerekli yetkileri tanımlayabilirsiniz.
!!! Dikkat !!!
Yukarıdaki örnekte sadece public şeması içerisindeki objeler için yetki tanımlanmıştır. Farklı şemalarınız varsa ona göre yetki vermeniz gerekmektedir.
Yetki ile daha detaylı bilgi için POSTGRESQL USER,ROLE,GROUP başlığı altında ki yazılarımı okuyabilirsiniz.