- Posted on
- • Uncategorized
Creating a New User and Assigning Permissions in MySQL
- Author
-
-
- User
- edan
- Posts by this author
- Posts by this author
-

Setting up a MySQL database often involves creating user accounts tailored to specific roles and responsibilities. This process includes defining permissions that control what each user can do within the database. Below is a detailed approach to creating a new MySQL user and granting the necessary permissions to ensure secure and effective database management.
Prerequisites
To get started, you will need access to a MySQL database. This can be installed on your local machine or a virtual server. If you haven’t set one up yet, consider exploring options for installing MySQL on diverse platforms, including cloud-based solutions for simplified management.
Creating a New User
MySQL comes equipped with a default root
user that enjoys unrestricted access to the server. To maintain security, it is best practice to create additional user accounts with limited permissions based on their requirements.
To start the process, log into the MySQL shell using the root user account. If you are on Ubuntu and your MySQL root user is set up with socket authentication, execute:
sudo mysql
Alternatively, if a password is required for authentication, use the command below:
mysql -u root -p
Once you are at the MySQL prompt, you can create a user account by following this syntax:
CREATE USER 'newusername'@'host' IDENTIFIED BY 'yourstrongpassword';
For example, if you want to create a user named alex
accessing from localhost
, the command would be:
CREATE USER 'alex'@'localhost' IDENTIFIED BY 'A_veryStr0ngP@ssword!';
For additional security, depending on your application's compatibility, you may select different authentication methods. For instance, if you want the user to log in with the legacy mysql_native_password
plugin, you can modify the user creation command as follows:
CREATE USER 'alex'@'localhost' IDENTIFIED WITH mysql_native_password BY 'A_veryStr0ngP@ssword!';
Granting Permissions
Once the user account is created, the next step involves assigning the required permissions. Use the GRANT
statement to specify the privileges you wish to assign. The syntax appears as follows:
GRANT PRIVILEGE ON database.table TO 'username'@'host';
For instance, to grant SELECT
, INSERT
, and UPDATE
permissions on all tables of a database named sales_db
, execute:
GRANT SELECT, INSERT, UPDATE ON sales_db.* TO 'alex'@'localhost';
To empower the user with broader permissions like creating and deleting tables, you could use:
GRANT CREATE, DROP, INSERT, UPDATE, DELETE ON sales_db.* TO 'alex'@'localhost' WITH GRANT OPTION;
The WITH GRANT OPTION
clause allows the user to extend their permissions to other accounts, which should be assigned judiciously to prevent unnecessary privilege escalation.
If you ever need to revoke permissions, use the following format:
REVOKE PRIVILEGE ON database.table FROM 'username'@'host';
As an example, to revoke the DELETE
permission from the user alex
, you would run:
REVOKE DELETE ON sales_db.* FROM 'alex'@'localhost';
Reviewing and Modifying User Permissions
To see the existing privileges assigned to a specific user, use the following command:
SHOW GRANTS FOR 'username'@'host';
To delete a user account when it's no longer needed, use the DROP USER
statement:
DROP USER 'alex'@'localhost';
To exit the MySQL shell, simply type:
exit;
In the future, if you want to log in as the newly created user, you can do so with the following command:
mysql -u alex -p
You’ll be prompted to enter the password for the alex
user.
Conclusion
Creating distinct user accounts and meticulously managing permissions is fundamental for maintaining the security and efficiency of your MySQL database. For further exploration of MySQL functionalities, consider delving into more complex features and configurations that can enhance your database management experience.