MySQL Workbench is a great multi-purpose GUI tool for MySQL, which I think is not marketed enough by the MySQL team and is not appreciated enough by the community for what it can do.

MySQL Workbench Licensing

MySQL Workbench is similar to MySQL Server and is an Open-Core product. There is Community Edition which has GPL licensed source code on GitHub as well as the “MySQL Workbench Standard Edition (SE)” and “MySQL Workbench Enterprise Edition (EE)” which are proprietary. The differences between the releases can be found in this document.

In this MySQL Workbench review, I focus on the MySQL Workbench Community Edition, often referred to as MySQL Workbench CE.

Downloading MySQL Workbench

You can download the current version of MySQL Workbench here.

Installing MySQL Workbench

Installation, of course, will be OS-dependent. I installed MySQL Workbench CE on Windows and it was quite uneventful.

Starting MySQL Workbench for the first time

If you go through the default MySQL Workbench install process, it will be started upon install completion. And as it starts, it will check for MySQL Servers running locally, and because I do not have anything running locally, it won’t detect any servers.

You need to click on the little “+” sign near the “MySQL Connection” text to add a connection. I think a clearer link to “Add Connection” by “Rescan Servers” would be more helpful.

Connection options are great. Besides support for TCP/IP and Local Socket/Pipe, MySQL Workbench also has support for TCP/IP over SSH, which is fantastic if you want to connect to servers reachable via SSH but do not have MySQL port open.

When you have the connection created, you can open the main screen of MySQL Workbench which looks like this:

You can see there is a lot of stuff there! Let’s look at some specific features.

MySQL Workbench Management Features

Server Status shows information about the running MySQL Server. Of course, being an Oracle product, it is not designed to detect the alternative implementations. In this case, Percona Server has a Thread Pool feature but it shows as N/A.

Server Performance information graphs are updated in real-time and provide some idea about server load.

Client Connections shows current connections to MySQL Server. This view has some nice features, for example, you can hide sleeping connections and look at running queries only, you can set the view to automatically refresh, and kill some queries and connections. You can also run EXPLAIN for Connection to see the query execution plan.

How EXPLAIN for Connection works is a bit complicated. As you click on EXPLAIN for Connection, the notebook containing the query opens up, but I would expect to see the explain output at this point:

You when need to click on the EXPLAIN icon to see the Query Explain Output:

Note you can get both EXPLAIN for the given query or EXPLAIN for CONNECTION, which can be different, especially in the case of this particular query, where the execution plan was abnormal.

There are multiple displays for EXPLAIN provided, including Tabular Explain and Raw JSON explain, if you want to see these, although having Visual Explain displayed is a unique MySQL Workbench feature.

I also like the feature of MySQL Workbench to provide additional details on connection, such as held locks as well as connection attributes, which can often help to find what particular application instance this query comes from.

Users and Privileges

This MySQL Workbench functionality allows you to view and manage your users:

It is not very advanced, but instead for the basic needs of understanding user privileges. It has built-in support for Administrative Roles but there does not seem to be support for generic roles or some newer features such as locking accounts or requiring a change in password after a certain period of time, etc.

Status and System Variables

The Status and System Variables section in MySQL Workbench shows the formatted output of “SHOW GLOBAL STATUS” and “SHOW VARIABLES”:

I like the fact that the massive number of settings and variables are grouped into different categories and there is some help provided. The fact that all values are only provided as raw numbers, without any formatting and not normalized per second when appropriate, make it hard to work with such information.

Data Export and Data Import/Restore

As you may expect, these provide the functionality to export and import schema and possibly data. This basically provides GUI for mysqldump, which is a great help for more advanced use cases.

Instance Management

This is interesting; even though I set up a connection using SSH, MySQL Workbench does not automatically use it for host access. It needs to be configured separately instead, by clicking the little Wrench icon.

If you’re using Linux for Remote Management, you will need to provide quite a lot of details about the Linux version, packaging type, and even init scripts you use, which can easily be overwhelming.

I do wonder why there is no auto-detection of the system type implemented here.

If you configure Remote Management in MySQL Workbench properly, you could, in theory, be able to start/stop the server, look at server logs, and view options file. It did not work well in my case.

Performance – Dashboard

The MySQL Workbench Performance Dashboard section shows a selection of Performance Graphs. It is not very deep and only shows stats while MySQL Workbench is running, but it covers some good basics.

Performance – Reports

The Performance Reports section in MySQL Workbench is pretty cool; it shows a lot of reports based on MySQL’s sys schema.

This is pretty handy, but I think it would benefit from having better formatting (so I do not have to count digits to see how much memory is used) and also numbers from the instance start often make little sense.

Performance Schema Setup

This is one of the hidden gems in MySQL Workbench. Performance Schema configuration in MySQL can be rather complicated if you’re not familiar with it, and MySQL Workbench makes it a lot easier. Its default Performance Schema controls are very basic.

However, if you enable the “Show Advanced” settings, it will give you this fantastic overview of Performance Schema:

As well as allow you to modify the configuration in details:

Until this point, we have been operating in Administration View. If you want to work with Database Schema, you want to switch MySQL Workbench to Schema View.

This view allows you to work with tables and other database schema objects. The contextual menu provides different functions for different objects.

MySQL Workbench Query Editor

Finally, let’s take a look at the MySQL Workbench Query Editor. It has a lot of advanced features.

First, I like that it is a multi-tab editor so you can have multiple Queries opened at once and you can switch between them easily. It also has support for helpful snippets – both a large library of built-in ones as well as ones created by the user. It also has support for contextual help with can be quite helpful for beginners.

I like the fact MySQL Workbench adds LIMIT 1000 by default to queries it runs, and it also allows you to easily and conveniently edit the stored data.

Examine Field Types:

View Query execution statistics:

Though in this case, it seems to only show information derived from SHOW SESSION STATUS and not more advanced details available in Performance Schema.

Visual Explain is quite a gem of MySQL Workbench too, but we covered it already.

Summary

In general, I’m quite impressed with the functionality offered with MySQL Workbench CE (Community Edition). For someone looking for a simple, free GUI for MySQL to run queries and provide basic help with administration you need to look no further. If you have more advanced needs, particularly in the monitoring or management space, you should look somewhere else. Oracle has MySQL Enterprise Monitor for this purpose which is a fully commercial product that comes with a MySQL Enterprise subscription. If you are looking for an Open Source Database Monitoring-focused product, consider Percona Monitoring and Management.