Remove a MySQL user

December 29, 2020  ‐ 2 min read

To remove a user and its privileges from a MySQL database you use the DROP USER statement. With MySQL you can create multiple users and assign different permissions. But it's a good idea to not keep unused accounts around.

You can delete a user in MySQL with the following statement.

mysql> DROP USER 'morty'@'localhost';

This would have dropped the user morty from the host localhost.

Keep in mind that this change takes effect after the sessions of the deleted user is closed. If the dropped user has an open session, the user isn't dropped until its session is closed.

Ofcourse you can't just go dropping users left and right. In order to do so you at least need either the global CREATE USER or DELETE privilege in mysql system schema.

You can list your user privileges in MySQL as well. For this you need the SHOW GRANTS statement.

This shows the grants of the currently logged in user.

mysql> SHOW GRANTS;
+---------------------------------------------------+
| Grants for koen@localhost                         |
+---------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'koen'@'localhost' |
+---------------------------------------------------+
1 row in set (0,00 sec)

If the user doesn't have the sufficient rights to drop a user you should be able to drop it as the root user.

One thing that might comes in handy is a query to show the users which are currently present. In order to do so you can query the mysql.user table.

mysql> SELECT User, Host FROM mysql.user;
+---------------+-----------+
| User          | Host      |
+---------------+-----------+
| koen          | localhost |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+