Michal Čihař - State and future of phpMyAdmin

State and future of phpMyAdmin

phpMyAdmin is one of the most popular tools written in PHP. It is widely deployed by hosting providers for it's capabilities in MySQL management, often providing it as the only option. Even though this project is more than 10 years old, it is still alive and bringing new features to it's users. phpMyAdmin offers wide range of features, but most users use just very limited subset of them. In this article, I will introduce some existing features and provide you preview of features coming in 3.4 release.

Basic functionality

Basic phpMyAdmin functionality is available just after installation. You usually don't need to modify configuration file at all, because defaults should work well on most system. In case you want to modify the configuration, you can use convenient setup script (this links points to installation on demo server, which allows you to generate configuration file as well, but you can as well use the one bundled with phpMyAdmin in setup directory). The recommended and default authentication method will allow you to enter MySQL credentials and login as any user who has defined access to MySQL.

phpMyAdmin setup script

Once you're inside phpMyAdmin, you can perform any operations with your MySQL database. Of course everything is limited by your privileges, so you can manage privileges of other users, if you are superuser, but this page is not shown if you are not.

phpMyAdmin main screen

As phpMyAdmin is quite complex tool, it can give you also hints about the configuration. As you can see on above screenshot, the bottom of the main page shows some such hints. In our case there are two warnings - first is about phpMyAdmin configuration storage (which will be described later) and the second tells us that our MySQL server has no root password configured, what is somewhat insecure (and unfortunately the MySQL default).

The standard database operations should be quite straightforward - you choose database and table in navigation (left for LTR languages) frame and you can operate on it in main frame. The various operations are identified by tabs, where some special tasks (like table maintenance, dropping or renaming) are grouped on Operations tab.

phpMyAdmin configuration storage

Many of advanced functionality in phpMyAdmin requires you to set up phpMyAdmin configuration storage (previously called Linked tables infrastructure). There is no magic hidden behind this, these are just few tables, which phpMyAdmin uses to store additional parameters to allow persistence of the data.

The phpMyAdmin configuration storage is currently used for following features:

You can find information how to set up the storage in phpMyAdmin documentation.

Upcoming features

The upcoming 3.4 release will bring lot of new functionality. Some of that has been developed by core members, but many contributions were made thanks to Google Summer of Code program, where five students were working on improving phpMyAdmin. If you want to try new features, you can do that on the phpMyAdmin demo server.

The ChangeLog for 3.4 is already quite huge (probably biggest for single phpMyAdmin version ever released), so lot of work has been done. However as the changes are quite bit, it will still need time to stabilize, so you can not expect release to happen this year.

AJAX and Javascript

phpMyAdmin is now much faster in modern browsers, thanks to using AJAX in lot of places instead of loading whole new page. This is probably the most intrusive change made in 3.4 and at time of writing this post, there are still some rough edges, but the developers are polishing them right now.

Also there is not only AJAX, but lot of user input can be validated on client side now allowing faster reactions on invalid input.

User interface cleanup

The user interface cleanup is partly connected with previous changes, because some functionality simply required more Javascript (for example editor for ENUM/SET fields). Besides these there were major changes in export and import pages, which now should be easier to understand, hiding advanced options from unexperienced users, while still providing ability to change them.

New phpMyAdmin export page

User preferences

One of long requested features was ability to change configuration for each user. And phpMyAdmin now has it. If you have configured the phpMyAdmin configuration storage, settings are permanently stored in the database, otherwise in session and optionally in web storage in your browser.

You can configure any aspect of phpMyAdmin not affecting security or server performance, like confirming DROP queries, default export settings, user interface tweaks and so on.

New phpMyAdmin preferences page

Improved schema export

In previous versions, it was possible to export database relational schema into PDF format. The 3.4 release comes with modular system for exporting schema adding SVG, Dia, EPS or Microsoft Visio. Especially SVG and EPS are useful for embedding schema into other documents.

Contributions welcome

As a free software project, phpMyAdmin welcomes any contributions. Even reporting bugs or feature requests will help improving the program, but most valued is helping the developers. There are always a non developer tasks like documentation or translations.