How To Create a New User and Grant Permissions in MySQL

Here i will give you quick overview of how to create Mysql user and how to set their permissions. As you know MySQL is an open-source database management software that helps users store, organize, and later retrieve data. It has a variety of options to grant specific users permissions for the tables and databases.

Here i am assuming that you already created MySQL database, now Let’s start by making a new user within the MySQL shell:

mysql> CREATE USER 'newdbuser'@'localhost' IDENTIFIED BY 'password';

At this point newdbuser has no permissions to do anything with the databases. In fact, even if newdbuser tries to login with the password, he/she will not be able to reach the MySQL shell.

So now we will provide access permissions to newdbuser by using following command

mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

The asterisks in this command refer to the database and table (respectively) that they can access—this specific command allows to the user to read, edit, execute and perform all tasks across all the databases and tables.

Please note that in this example we are granting newdbuser full root access to everything in our database. While this is helpful for explaining some MySQL concepts, it may be impractical for most use cases and could put your database’s security at high risk.

How To Grant Different User Permissions

Here is a short list of other common possible permissions that users can use:

ALL PRIVILEGES– as we saw previously, this would allow a MySQL user full access to a designated database (or if no database is selected, global access across the system)
CREATE- allows them to create new tables or databases
DROP- allows them to them to delete tables or databases
DELETE- allows them to delete rows from tables
INSERT- allows them to insert rows into tables
SELECT- allows them to use the SELECT command to read through databases
UPDATE- allow them to update table rows
GRANT OPTION- allows them to grant or remove other users’ privileges

To provide a specific user with a permission, you can use following command

mysql> GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

If you want to give them access to any database or to any table, make sure to put an asterisk (*) in the place of the database name or table name.

Once you have finalized the permissions that you want to set up for your new users, always be sure to reload all the privileges.


Your changes will now be in effect. Each time you update or change a permission be sure to use the Flush Privileges command.



Leave a Reply

Your email address will not be published. Required fields are marked *