Blog Posts

Want to see your pgAdmin blog post here? Email webmaster@pgadmin.org.

How to Use Logical Replication in pgAdmin4

Author: Pradip Parkale, date: Oct. 7, 2021

Logical replication follows a publish and subscribe model. In a publisher node, a publication is created, which is a set of changes from a table or a group of tables. In a subscriber node, a subscription is created, which can subscribe to one or more publications. But why logical replication? Well in traditional replication, the standby server is a bit for bit copy of the leader server but what if you want to copy only some data? Logical replication gives you that flexibility of what should be sent and where to send the data.

Read more

pgAdmin and Porting the Node Properties Dialogs to ReactJS

Author: Aditya Toshniwal, date: Oct. 6, 2021

In a previous blog post, The Reasons Why pgAdmin Chose ReactJS, I had discussed the rationale behind choosing ReactJS for porting away from Backbone/jQuery. Following the post, I want to share the experience and course of actions EDB's pgAdmin team followed to achieve our goal. To date, the pgAdmin team has successfully ported all the properties dialog of the browser nodes to React based forms and has reached the testing phase.

Read more

How To Configure OAuth 2.0 in pgAdmin 4

Author: Khushboo Vashi, date: Sept. 30, 2021

pgAdmin 4 supports multiple authentication methods through its pluggable architecture. Currently four methods are supported:

  • Password based pgAdmin internal authentication (default)
  • Kerberos
  • LDAP
  • OAuth 2.0
We are also going to support authentication at web server level, ex: HTTP Basic Auth very soon, keep an eye on the pgAdmin release notes for more information. This blog will guide you to set up the OAuth 2.0 authentication in pgAdmin 4.

Read more

How to Get the Most Out of the Schema Diff Tool in pgAdmin 4

Author: Akshay Joshi, date: Sept. 6, 2021

The Schema Diff Tool in pgAdmin 4 allows you to compare objects between two databases or two schemas. It allows you to compare tables, views, functions, sequences, packages, procedures and other database objects between two schemas/databases. It will report any discrepancies between schemas such as missing or mismatching procedures, tables, triggers, columns, indexes and constraints. It also will detect column discrepancies such as data type, nullability and defaults.

Read more

How to Deploy pgAdmin in Kubernetes

Author: Dave Page, date: June 28, 2021

pgAdmin has long had a container distribution; however the development team rarely used it, except when testing releases. So virtually all of our experience has been using Docker. Recently, a user ran into an issue when running under Kubernetes that I was unable to reproduce in Docker, so I spent some time learning how a pgAdmin deployment would work in that environment—and ironically it worked just fine; I couldn't reproduce the bug! Regardless, I gained an understanding of how to deploy pgAdmin in Kubernetes, so here's how it works.

Read more

The Reasons Why pgAdmin Chose ReactJS

Author: Aditya Toshniwal, date: March 10, 2021

pgAdmin 4 is a management tool for PostgreSQL and EDB Postgres Advanced Server. pgAdmin 4 was re-written from pgAdmin 3 (a native desktop application). The application is designed to work on both the desktop and a web server. It is written in Python using Flask with the user interface written in JS/jQuery/Backbone, and can be deployed on any network. It is 2021, and one might argue about why pgAdmin chose jQuery/Backbone. The development work of pgAdmin 4 started in around 2014, and back then, Backbone.js was one of the most popular frameworks. Backbone.js was even more popular than React at the time.

Read more

Kerberos Support in pgAdmin 4

Author: Khushboo Vashi, date: March 1, 2021

The pgAdmin team has been receiving requests from users to support Kerberos Authentication for quite some time and as a result, we have decided to implement it. The work has been divided into 2 phases. The first phase adds pluggable Kerberos authentication in the pgAdmin Server (multi user) mode using GSSAPI and SPNEGO, similar to the existing LDAP support. The web browser and the pgAdmin web server negotiate Kerberos as a security mechanism through SPNEGO and exchange tickets as SPNEGO tokens over HTTPS and which will bypass the pgAdmin login page entirely if the Kerberos authentication succeeds.

Read more

Testing pgAdmin

Author: Dave Page, date: Aug. 25, 2020

Like any software, pgAdmin has bugs. At the time of writing there are 119 new or in-progress issues in the bug tracker, which is pretty good for a piece of software with so many moving parts, and regular-as-clockwork monthly releases. Over 10% of these issues are currently assigned to the reporter to gather further information, plus there will undoubtedly be some duplicates and support issues/feature requests in that number that haven’t yet been picked up in our weekly backlog refinement meeting and either closed or moved to the feature or support trackers.

Read more

pgAdmin, a comparable tool to PL/SQL Developer for PostgreSQL

Author: Shivam Dhapatkar, date: Feb. 9, 2020

This article explains how to get started using pgAdmin 4 as a management tool for PostgreSQL.

  1. How to download pgAdmin 4
  2. How to get started with pgAdmin 4
  3. Query Tool
  4. How to execute a query in pgAdmin 4
  5. Creating functions, procedures, and triggers using Query Tool

Read more

Reverse Proxying to pgAdmin

Author: Dave Page, date: July 10, 2019

Reverse proxying requests to a pgAdmin server is becoming more and more popular if posts to the mailing lists are to be taken as an indicative measure; more often than not when using pgAdmin in a container (of which there have now been over 10 million pulls)! Typically users will deploy a reverse proxy for a couple of reasons; to host multiple applications in different subdirectories under the same domain, or to add SSL/TLS support independently of the application. Because of the number of questions asked, I spent a little time over the last couple of days doing some testing and updating the documentation with some examples. Here's a blog-ified version of that work.

Read more