How to Use PHPMyAdmin

This article will explain how you can use PHPMyAdmin and how to create a database dump.

For your protection, phpMyAdmin by default is only accessible through the example.hypernode.io/phpmyadmin/ URL, on Vagrant via the *example*.hypernode.local/phpmyadmin/ url and on Docker through YourBaseURL/dbadmin/ after you followed these instructions. You can adjust this behaviour to your own preference.

Accessing PHPMyAdmin

PHPMyAdmin comes preinstalled on your Hypernode at http://example.hypernode.io/phpmyadmin/. In order to reduce brute force attacks, it is not accessible via any other domains names linked to your Hypernode.

Credentials

PHPMyAdmin uses the same user and password your database uses. You can find them safely stored on your hypernode in /data/web/.my.cnf.

Enabling HTTPS

By default PHPMyAdmin is installed at http://example.hypernode.io/phpmyadmin/. We highly advise you to enable HTTPS before logging in, to keep your credentials safe. You can do so using the following command:

hypernode-manage-vhosts --https --force-https example.hypernode.io

Using phpMyAdmin on Hypernode

Create a database dump using phpMyAdmin

  • Go to https://example.hypernode.io/phpmyadmin/

  • Log in with your credentials

  • Click on “Databases” and select the database.

  • Click on “Export”.

  • Click on “Go” and the export/backup will be available.

If you have a large database, making a database dump through phpMyAdmin is not very reliable. Before importing it, make sure the integrity of your database dump is sane!

Configure PHPMyAdmin

When you want to use phpMyAdmin via another domain, via another URL, or you want to add an allowlist with IP’s that are allowed to access phpMyAdmin, you will need to create a custom nginx configuration

  • Create an nginx snippet in /data/web/nginx called server.phpmyadmin with the following content:

location /dbadmin/ {
    # Only allow IP addresses defined in /data/web/include.whitelist
    include /etc/nginx/app/include.whitelist;

    # Uncomment to secure phpMyAdmin with additional basic_auth
    # include /etc/nginx/app/include.basic_auth;

    # For static files, alias this location to PMA files on disk
    alias /usr/share/phpmyadmin/;

    try_files $uri $uri/ /dbadmin/index.php last;

    location ~ \.php$ {
        echo_exec @phpfpm;
    }
}
  • Next, create the include.whitelist in /data/web/nginx and add your IP(s) to the snippet

allow XXX.XXX.XXX.XXX;
deny all;

Now make sure to set a symlink from within your webroot: ln -s /usr/share/phpmyadmin/ dbadmin

And finally visit phpMyAdmin on https://yourdomain.nl/dbadmin

This will only add another URL where phpMyAdmin is accessible. If you only want to use this endpoint, block all access to /phpmyadmin too

Blocking All Access to PHPMyAdmin

If you want to fully disable phpMyAdmin, create the following snippet as /data/web/nginx/server.phpmyadmin:

## Block PHPMyAdmin
if ($request_uri ~ ^/phpmyadmin ) {
    return 403;
}

Troubleshooting PHPMyAdmin

  • The phpMyAdmin button in the control panel redirects to https:// and gives a 404 in Nginx

This is probably because you redirect ALL traffic over HTTPS. Try using PHPMyAdmin over ssl as explained above.

  • I’m receiving an error while dumping the database

Most of the time this happens when a database is large, and you exceed the max_execution_time or memory_limit in php. If this happens try dumping your database on the command line

  • My phpMyAdmin does not show any images

This happens when you redirect all traffic to HTTPS, causing mixed content errors in your browser. To solve this, use phpMyAdmin over SSL.

  • Static content doesn’t (fully) display

This happens if you define a regex location block in your nginx config that matches phpmyadmin’s static files; This will override the existing config for static files under /phpmyadmin/. To solve this, you will have to change your custom location block to not match files in the /phpmyadmin/ location.