Grant Privileges on a Database in MySQL

Meenakshi Agarwal
By
Meenakshi Agarwal
Hi, I'm Meenakshi Agarwal. I have a Bachelor's degree in Computer Science and a Master's degree in Computer Applications. After spending over a decade in large...
7 Min Read
How to Grant Privileges in MySQL

This tutorial explains how you can grant privileges on a database in MySQL. It will introduce you all the steps beginning from connecting to MySQL and then accessing the MySQL commands to set the desired level of privileges.

So, if you wish to grant or update the privileges in MySQL, first you should connect to the running MySQL instance. You may log in with a root user or as someone with the super user-level access.

While you install MySQL, it prompts you to set the root user password. And you need to keep it secure with you as it will come handy with many such tasks. If you’ve not done it yourself, then you can read our below post on installing MySQL.

How to Grant Privileges in MySQL

Let’s now look at the steps to grant rights on databases in detail.

Use MySQL CLI to connect to database

It is the very first step to launch the MySQL CLI client (MySQL CLI). For this tutorial, we’ll be using the root account to connect to the database.

So, the first command, we issue is the MySQL:

$ mysql
mysql>

It will bring you the MySQL query console where you run any of the MySQL statement. However, if the MySQL command fails, then try providing the user directly, as shown below:

$ mysql --user=My_user

Here, you can specify the name of the user along with –user flag.

Related Topic – How to Install MySQL on Ubuntu

Grant privileges on tables

Since we’ve already opened the MySQL CLI, so our next step is to issue the GRANT command. And, we also need to understand which options to use while assigning permissions.

Understand the database access rights

By using the GRANT command, we can apply a range of privileges. For example, one might need permission to create tables and schemas or the ability to write/update files or restarting the server instance.

There is also a necessary security measure that you protect the MySQL database by assigning it to a unique user. No other account can access it or perform any operation.

Syntax

Here is the statement to grant permission on a DATABASE for the specified USER:

-- MySQL GRANT Syntax
GRANT [SELECT, INSERT, DELETE, ..., GRANT] ON DATABASE_NAME TO USER_NAME;

We can choose a set of access rights from the below list to apply.

  • SELECT – To view the result set from a TABLE
  • INSERT – To add records to a TABLE
  • DELETE – To remove rows from a TABLE
  • INDEX – To create indexes on a TABLE
  • CREATE – To create tables/schemas
  • ALTER – To modify tables/schemas
  • DROP – To delete a TABLE
  • ALL – To give ALL permissions excluding GRANT
  • UPDATE – Can modify a TABLE
  • GRANT – Change or Add permissions

Next, we would see some examples of granting privileges in MySQL.

Examples

In examples below, we’ll use EMPL as the database name, and JOHN as the user.

1. Grant SELECT Privilege

GRANT SELECT ON EMPL TO 'JOHN'@'localhost;

2. Grant more than one Privilege

GRANT SELECT, INSERT, DELETE, UPDATE ON EMPL TO 'JOHN'@'localhost;

3. Grant All the Privilege

GRANT ALL ON EMPL TO 'JOHN'@'localhost;

4. Grant a Privilege to all Users

GRANT SELECT ON EMPL TO '*'@'localhost;

In the above example, we used an asterisk to grant SELECT privilege to all the existing users.

Grant privileges on functions/procs

We may have to define functions and stored procedures in MySQL. So, they also need permissions to work. And we can apply the Grant statement on these as well.

However, it is the EXECUTE privilege that we need to specify in the GRANT command for a function or procedure.

Syntax

-- Grant for a function or proc
GRANT EXECUTE ON [ PROCEDURE | FUNCTION ] DATABASE_NAME TO USER_NAME;

Now, let’s have some of granting EXECUTE Privileges examples:

Examples

In the cases below, we’ll use GetSalary as the FUNCTION and SetJoiningDate as the PROCEDURE name, and JOHN as the user.

1. Grant EXECUTE rights on a FUNCTION in MySQL

GRANT EXECUTE ON FUNCTION GetSalary TO 'JOHN'@localhost';

2. Grant EXECUTE rights to all Users on a FUNCTION in MySQL

GRANT EXECUTE ON FUNCTION GetSalary TO '*'@localhost';

3. Grant EXECUTE rights to Users on a PROCEDURE in MySQL

GRANT EXECUTE ON PROCEDURE SetJoiningDate TO 'JOHN'@localhost';

4. Grant EXECUTE rights to all Users on a PROCEDURE in MySQL

GRANT EXECUTE ON PROCEDURE SetJoiningDate TO '*'@localhost';

Check privileges

We can also test the PERMISSIONS that we’ve given to a particular user. For this purpose, we can use the SHOW GRANTS statement.

-- Check Privileges Syntax
SHOW GRANTS FOR USER_NAME;

Now, to see the privileges assigned to a user named “JOHN” and the localhost, use the following command:

SHOW GRANTS FOR 'JOHN'@localhost';

It will get you the following result:

GRANTS FOR JOHN@localhost
GRANT USAGE ON *.* TO SUPER@localhost

Also Read – Database Testing with SQL: A Practical Guide

Summary – Grant privileges

We hope that after wrapping up this tutorial, you should feel comfortable in using the MySQL Grant privileges commands. However, you may practice more with examples to gain confidence.

Also, to learn SQL from scratch to depth, do read our step by step MySQL tutorial.

Share This Article
Subscribe
Notify of
guest

0 Comments
Newest
Oldest
Inline Feedbacks
View all comments