Add a phpMyAdmin service

Database management tools such as MySQL Workbench or Sequel Pro are commonly used by developers to work with a MySQL database. However, Tugboat does not provide a way for these tools to connect to a database in a Preview. A popular alternative is to use phpMyAdmin to fill this gap.

Exposing a phpMyAdmin service grants full access to the database for the Tugboat Preview to anyone who has the link. While it is best practice to avoid storing sensitive data in Tugboat, it is still a good idea to be careful about sharing this link.

You can use the official phpMyAdmin Docker image can with Tugboat. Here is an example config file showing how you might add a phpmyadmin service to a Tugboat Preview:

services:
  mysql:
    image: tugboatqa/mysql:5-debian
  phpmyadmin:
    expose: 80
    image: phpmyadmin/phpmyadmin

MySQL 8 uses a new authentication method, which does not work with the PHP mysqli extension that phpMyAdmin uses. To work around this, alter the “tugboat” MySQL user with an init command for the mysql service. Your config.yml might look like this:

mysql:
  image: tugboatqa/mysql:8-debian
  commands:
    init: mysql -e "ALTER USER 'tugboat'@'%' IDENTIFIED WITH mysql_native_password BY 'tugboat';"

Once you’ve added the phpmyadmin service to your Tugboat config, you will need to follow the instructions on the Custom Environment Variables to add the following environment variables to your Repository Settings:

  • PMA_HOST - Set this to the name of the MySQL service that you would like phpmyadmin to connect to. In the example yml config above, the service name is mysql

  • PMA_USER - Set this environment variable to a MySQL user that can connect to the above MySQL service. Typically this is the default tugboat user

  • PMA_PASSWORD - This is the password for the above MySQL user. The default password for the tugboat user is also tugboat

Once you’ve added these environment variables, you’re ready to build a new Preview with phpMyAdmin. Note that we are exposing port 80 in the config.yml above, which will give you a separate Preview button on the Tugboat Preview Dashboard for phpMyAdmin:

Click Preview to access phpMyAdmin