Posts

Showing posts from May, 2018

PostgreSQL Grant Privileges To a Role

Hi all, If you have lots of user and table/schema on your database you can not give permission per table but you can follow this steps. It's gonna be manual process but sometimes you can not give whole privileges on entire schema in your databases to users/roles. So, in that case you should generate your scripts. GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO your_role; GRANT USAGE ON SCHEMA schema_name TO your_role; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_name TO your_role; If you don't want to give all privileges and make specific for users also you can generate a sql script for whole schema for user or your all users like; Generate GRANT script for granting privileges whole schemas for a role; SELECT DISTINCT 'GRANT SELECT ON ALL TABLES IN SCHEMA '|| schemaname || 'TO user_role;' FROM pg_stat_user_tables; Generate USAGE script for whole schemas; SELECT DISTINCT 'GRANT USAGE ON SCHEMA '|| schemaname || 'TO user_role;

PostgreSQL 10 Logical Replication

Merhaba, PostgreSQL 10 ile gelen yeniliklerden biri olan Logical Replication'dan bahsetmek isterim. Logical Replication (LR), veri objelerini ve üzerlerindeki değişiklikleri, replikasyon kimliklerine göre (primary key gibi) replike eder. Yani aslında publisher veritabanından datanın snapshot’ının kopyalanmasıdır. Tüm değişiklikler tamamlandığında publisher üzerindeki değişiklikler subscriber’a real time olarak yollanır. LR ile sadece normal tablolar replike edilebilir. Materialized view, view, partition’un root tablosu yada foreign tabloları replike edilemediği göz önünde tutulmalıdır. Ayrıca şema bazlı veri aktarımı yapılamamakta. Farklı PostgreSQL versiyonları arasında LR yapılabilir. Birden fazla veritabanı üzerinden tek bir veritabanına LR yapılabilir. Farklı kullanıcı gruplarına replike olmuş datalar için yetki verilebilir. Veri objesi üzerinde yapılan her tekil değişiklik karşı tarafa aktarılır. Tek bir tablonun replikasyonu birden farklı cluster’lar üzerinde olabilir. LR i

Matching PostgreSQL Client and Server Versions

Hi, When PostgreSQL server and cluster versions don't match, PostgreSQL doesn't let you to run some functions, therefore you can not use efficiently and can not be advanced on it. To solve this problem you need to upgrade version or follow bellow steps. You can try all of steps for your development or test environments. I installed PostgreSQL server and client with different versions to show what is gonna happen If I try to dump. For sure, I can not get pg_dump! -bash-4.2$ pg_dump -s testdb > testdb_dump.sql pg_dump: server version: 9.6.3; pg_dump version: 9.2.18 pg_dump: aborting because of server version mismatch -bash-4.2$ pg_ctl stop -m fast waiting for server to shut down.... done server stopped -bash-4.2$ mv /var/lib/pgsql /tmp/pgsql_cluster_old mv: cannot move ‘/var/lib/pgsql’ to ‘/tmp/pgsql_cluster_old’: Permission denied To move pgsql file, need to be root at this moment. -bash-4.2$ logout [root@gunce-test tmp]# mv /var/lib/pgsql /tmp/pgsql_clu