How to List All Users in a MySQL Database

September 18, 2024

Introduction

MySQL databases are multi-user environments. Knowing how to list all database users is essential for efficient database management and database security.

Various MySQL queries provide information about database users, and each command offers different insights.

This guide will show multiple ways to list all users in a MySQL database.

How to list all users in a MySQL database.

Prerequisites

  • Access to the command line/terminal window.
  • MySQL installed (we're using MySQL 8).
  • Access to a user with sudo or root privileges.

Note: To install and run MySQL, use one of our guides:

Access MySQL Database

To access the MySQL server as a root user, enter the following in the terminal:

sudo mysql -u root -p
sudo mysql -u root -p mysql shell

Enter the sudo and root user's password when prompted. The session switches to the MySQL shell.

MySQL Show Users Command

The following query lists usernames that have access to the database server:

SELECT user FROM mysql.user;
SELECT user FROM mysql.user output

The system retrieves the information from the user column in the mysql.user database.

Add columns for a more detailed overview of MySQL users and their privileges.

How to List mysql.user Database Fields

Before expanding the search, list all available fields in the mysql.user database. Use the desc command to describe the table:

desc mysql.user;
desc mysql.user output

The Field column contains data that can be queried in the mysql.user database. Combine several options in a single command to get detailed user information.

How to Show MySQL User Information

The following query provides a table with data specific to each user:

SELECT User, Host, authentication_string FROM mysql.user;
SELECT User, Host, authentication_string mysql output

The query adds two more columns to the table. Host contains the host from which the user can connect and authentication_string is the user's password hash.

How to List Only Unique MySQL Users

Some queries duplicate the usernames in the User column. Remove duplicates with:

SELECT DISTINCT User FROM mysql.user;
SELECT DISTINCT user FROM mysql.user output

The output removes duplicate rows and shows each username once.

Show Current MySQL User

Two MySQL functions help show the current user: current_user() and user(). Use the current_user() functions to get the details of the current MySQL user:

SELECT current_user();
SELECT current_user() mysql output

The command shows the user account that's in use and authenticated. To show user information that was provided when establishing a connection, use the user() function instead:

SELECT user();
SELECT user() mysql output

The output shows the logged-in MySQL user.

The two functions show the same account in most cases. The second may show a different output if there were authentication changes after establishing a connection.

Show Logged In MySQL Users

Knowing who is logged in when monitoring a MySQL server is crucial. Query the information_schema.processlist table to show all currently running processes and connected users:

SELECT user, host, db, command FROM information_schema.processlist;
SELECT FROM information_schema.processlist mysql output

The output shows the connected users, databases, and command type.

Conclusion

This guide showed various ways to query MySQL users. Numerous methods are available to list users, and each can provide specific search results.

Next, see how to delete a MySQL user or create a new user and grant privileges.

Was this article helpful?
YesNo
Vladimir Kaplarevic
Vladimir is a resident Tech Writer at phoenixNAP. He has more than 7 years of experience in implementing e-commerce and online payment solutions with various global IT services providers. His articles aim to instill a passion for innovative technologies in others by providing practical advice and using an engaging writing style.
Next you should read
How To Create New MySQL User and Grant Privileges
July 18, 2024

MySQL is a database application for Linux. It's part of the LAMP (Linux, Apache, MySQL, PHP) stack that...
Read more
How To Show a List of All Databases in MySQL
October 13, 2022

With Structured Query Language (SQL), you can easily access and manage content in all your databases...
Read more
How to Connect to MySQL using PHP
April 23, 2024

To access and add content to a MySQL database, you must first establish a connection between the database and...
Read more
How To Install MySQL on CentOS 7
February 6, 2019

MySQL is a popular free and open source database management application. It forms part of the LAMP stack...
Read more