How To Create a New User and Grant Permissions in MySQL
1. Overview
In this tutorial, we'll show how to create a new user and grant permissions to it in MySQL.
The article is tested on both MySQL 5 and MySQL 8.
2. Create a New User in MySQL
To create a new user in MySQL with SQL you need to be logged into the MySQL shell. To log into MySQL with existing user and password use:
mysql -u [username] -p
if you are logging for first time on Ubuntu:
sudo mysql -u root -p
and use your root password
2.1 Create new user
The command for creation of user in MySQL expects 3 parameters:
- 'some_user' - the user name
- 'localhost' - database hostname. Most often it will be the localhost - which means the local machine. In some cases the IP of the server of MySQL can be used
- 'some_pass' - the password
CREATE USER 'some_user'@'localhost' IDENTIFIED BY 'some_pass';
Next step is to grant permissions to this user in order to log, view, update or delete data.
2.2 Drop user
Users in MySQL can be deleted by DROP
command. You need to provide the user name and the host:
DROP USER 'some_user'@'localhost';
3. Grant User Permissions in MySQL
New users need permissions before to do anything in MySQL. If we like to give all permissions for every table in the DB - we can use:
GRANT ALL PRIVILEGES ON * . * TO 'some_user'@'localhost';
Where:
ALL PRIVILEGES
- grant all possible privileges* . *
- means all databases and all tables'some_user'@'localhost'
- the user and the host
After that we need to activate permissions by:
FLUSH PRIVILEGES;
4. Grant User Permissions per table and privilege
If we like to give only few privileges to set of tables/databases we can use:
GRANT SELECT ON db_name.table_name TO 'some_user'@'localhost';
The list of all privileges can be found below:
- CREATE
- DROP
- DELETE
- INSERT
- SELECT
- UPDATE
- GRANT OPTION
- ALL PRIVILEGES
All of them correspond to basic SQL or DB operations
5. Revoke User Permissions
To revoke permissions from users in MySQL we can use - REVOKE
command. Again we need to provide the user and the host, the privilege, table and database:
REVOKE SELECT ON db_name.table_name FROM 'some_user'@'localhost';
6. Show User Permissions
Finally to check permissions for a given user we can use - SHOW GRANTS
and specify the user and the host:
SHOW GRANTS FOR 'some_user'@'localhost';
7. Conclusion
In this post we saw how to create a new user and grant to it privileges. We covered different privileges, how to grant them per user or table.
Finally we saw how to drop user or revoke privileges in MySQL.