· Blog

Creating a read-only MySQL user

Jan 8th 2024

In MySQL, creating a read-only user can be an effective way to enhance the security of your database by restricting access to authorized users. By granting read-only privileges, you can prevent accidental modifications or unauthorized operations on your data. In this blog post, we will guide you through the process of creating a read-only MySQL user.

Understanding the Need for a Read-Only User

Assigning read-only privileges to specific users can provide several benefits, including:

  • Enhanced security: Restricting write access minimizes the risk of unintended modifications or data corruption.
  • Controlled data access: Granting read-only permissions allows users to view data without allowing them to alter or delete it.
  • Compliance with regulations: In industries such as finance or healthcare, read-only access may be necessary to comply with regulations.

Connecting to the MySQL Server

Before creating a read-only user, ensure that you're connected to the MySQL server using your preferred method, such as the command line or a graphical client like MySQL Workbench.

Creating a Read-Only MySQL User

To create a read-only user, follow these steps:

  1. Open a new query window or terminal.
  2. Execute the following SQL command:
CREATE USER 'read_only_user'@'localhost' IDENTIFIED BY 'password';
  • Replace 'read_only_user' with the desired username for the new read-only user.
  • Replace 'password' with the desired password for the read-only user.

Granting Read-Only Privileges

After creating the read-only user, specify the necessary privileges:

  1. Grant SELECT privilege on all tables in a specific database:
GRANT SELECT ON your_database.* TO 'read_only_user'@'localhost';
  • Replace 'your_database' with the name of the database you want the user to have access to.
  1. Grant SHOW VIEW privilege if needed:
GRANT SHOW VIEW ON your_database.* TO 'read_only_user'@'localhost';
  • Replace 'your_database' with the name of the database you want the user to have access to.

Verifying the User Creation

To confirm that the read-only user has been successfully created and granted appropriate privileges, run the following command:

SELECT user, host FROM mysql.user WHERE Select_priv = 'Y';

The result should display the username and host of the newly created read-only user.


Creating a read-only MySQL user is an effective practice to enhance database security and control access to sensitive data. By granting read-only privileges, authorized users can retrieve information without the risk of accidental modifications or unauthorized operations. By following the step-by-step guide provided in this blog post, you can confidently create a read-only MySQL user and provide secure data access to the right individuals.

Remember, regularly reviewing user privileges and performing security audits are vital for maintaining a robust and secure MySQL environment.