Compared with the classic phpPgAdmin
This application shares its name with the classic phpPgAdmin, the PHP administration tool for PostgreSQL first released in 2002. It is a separate application, written from scratch, and shares no code or configuration with it. This page compares the two so you can choose between them, and lists what to expect if you move from one to the other.
At a glance
| Classic phpPgAdmin | This phpPgAdmin | |
|---|---|---|
| Latest release | 7.13.0, November 2020 | See Releases |
| PostgreSQL | 7.4 to 13, provisional 14 | 13 and newer |
| PHP | 7.1 and newer; 7.13.0 was announced as the last release for PHP 7.2 | 8.3 and newer |
| License | GPL 2.0 or later | MIT |
| Interface | Its own, with a frame-style object browser on the left | phpMyAdmin 5.2's layout, pmahomme theme and tabs |
| Pages | Rendered on the server; most work without JavaScript | A single-page application; JavaScript is required |
| Configuration | conf/config.inc.php | config/*.php and PGADMIN_* environment variables (Configuration) |
| Servers | Listed in conf/config.inc.php | Any host entered at sign-in, remembered as a saved server |
| Own storage | None; history is kept in the PHP session | SQLite file in storage/ for saved servers, settings, history and bookmarks |
| Translations | 30+ languages | English and Arabic (Translations) |
| Extending it | Plugins (Report, GuiControl) | Modules |
Both sign in with a PostgreSQL role and run every statement as that role, so PostgreSQL's privileges decide what you can do in either one.
PostgreSQL features
The classic phpPgAdmin's last release supports PostgreSQL up to 13, but most of its forms date from earlier versions. Objects added to PostgreSQL in the last decade are not in its interface; you reach them through its SQL page.
| Feature | Classic | This one |
|---|---|---|
| Tables, columns, indexes, constraints, triggers, rules | Yes | Yes |
| Table info: inheritance, referencing foreign keys | Yes | Yes |
| Per-table autovacuum settings, CLUSTER on an index | Yes | Yes |
| Database-wide list of tables with their own autovacuum settings | Yes | Yes |
| Views | Yes | Yes |
| Materialized views | No | Yes |
| Declarative partitioning | No | Yes |
| Identity columns | No | Yes |
| Functions | Yes | Yes |
| Procedures | No | Yes |
| Aggregates | Create, drop | Create, edit, drop |
| Operators | Create, drop | Create, edit, drop |
| Operator classes and families, conversions | List | Create, DDL, drop |
| Sequences, domains, enum and composite types | Yes | Yes, with sequence Restart and Next value |
| Range types, collations | No | Yes |
| Full text search configurations and dictionaries | Yes | Yes, with parsers and templates |
| Extensions | No | Yes |
| Casts, languages | List | Create, edit, drop |
| Event triggers | No | Yes |
| Foreign data wrappers, servers, user mappings, foreign tables | No | Yes |
| Row-level security policies | No | Yes |
| Publications and subscriptions, replication slots, standbys | No | Yes |
| Roles, tablespaces | Yes | Yes |
| Changing your own password | Account page | Change password on the home page |
Per-database settings (ALTER DATABASE … SET) | Variables page (read) | Parameters (read and edit) |
| Default privileges, column privileges, grant wizard | No | Yes |
| SQL preview before create and alter | No | Yes, on most forms |
Tools
| Tool | Classic | This one |
|---|---|---|
| SQL editor | Text area with a query history, Explain and Explain Analyze | Editor with autocomplete, formatting, bind parameters, history, bookmarks and macros; Explain and Explain analyze |
| Browsing data | Paged table with edit and delete links | Grid with sorting, filters and inline editing |
| Search | Find objects by name | Find objects by name, or text in every table of a database |
| Server activity | Processes with cancel and kill, and locks, refreshed every few seconds, per server and per database | Status: live charts, sessions with cancel and terminate, locks, prepared transactions; a database's Processes tab |
| Server logs | No | Yes |
| Configuration parameters | No | Variables |
| Export | pg_dump / pg_dumpall as SQL; table data as SQL, COPY, CSV, tab-separated, HTML or XML | pg_dump / pg_dumpall as SQL, custom or tar archives; table, view and query rows as SQL (INSERT or COPY), CSV, tab-separated, HTML or XML |
| Import | Table data from CSV, tab-separated or XML | SQL scripts, pg_restore archives run in the background; CSV, tab-separated, COPY binary and XML into a table |
| Maintenance | VACUUM, ANALYZE, REINDEX, CLUSTER | The same, run through the client programs |
| ER diagram | No | Designer |
| Schema comparison | No | Schema diff with a migration script |
| PL/pgSQL debugger | No | Yes |
| Saved reports | Report plugin | Bookmarks |
When the classic phpPgAdmin fits better
- PostgreSQL older than 13. This application's SQL is written for 13 and newer; the classic one has query variants back to 7.4.
- PHP older than 8.3. The classic phpPgAdmin targets PHP 7.
- No JavaScript. The classic pages are plain HTML forms.
- A language other than English or Arabic.
The classic release predates PostgreSQL 15 and PHP 8.3, so try it with your own versions before relying on it.
Moving from the classic phpPgAdmin
- Install this application next to the classic one, not over it. Nothing in
conf/config.inc.phpis read; see Installation and Configuration. - Servers are not configured in a file. Enter the host on the login page once and it becomes a saved server;
config/db.phpsets the default server. - The classic
extra_login_securitysetting isPGADMIN_EXTRA_LOGIN_SECURITY=1(Configuration): it refusespostgres,pgsql,root,administratorand empty passwords. - The classic
owned_onlysetting isPGADMIN_OWNED_ONLY=1: a role that is not a superuser sees only the databases it owns. It only hides names; PostgreSQL's privileges still decide what a role can open. - The classic
show_systemsetting is the Show system objects preference under Settings » Navigation panel, per role. - Server groups are not needed: every server signed in to is a saved server offered at sign-in.
- Only the pmahomme theme is offered; the classic app's themes do not carry over.
- The layout follows phpMyAdmin: server, database, schema and table each have a tab bar, and each page has its own address. Finding your way around describes it.
- Some forms are not complete yet. Known limitations lists what to do in the SQL editor instead.