What is MySQL grant
The MySQL database software offers both administrators and users a great amount of control options. You can learn more about the users' MySQL management rights in our articles dedicated to the create-user, create-database, create-table and alter-table command options. The administration side of the process includes the possibility for the administrators to control certain user privileges over the MySQL server by restricting their access to an entire database or just limiting permissions for a specific table.
The administrators' control over the MySQL server users is executed through five tables within the MySQL database - the user table, determining whether the user can connect to the server or not, the db, tables_priv and columns_pri tables, specifying which users can access certain databases, tables or table columns from given hosts, and the host table, defining whether an entry within the db table should be extended and with what values.
How to GRANT privileges to users
The GRANT statement gives you the power to enable all, or a selection of, user privileges for a database or for a specific table. In order to GRANT privileges, first you need to log in to the MySQL server using an SSH client. Once you’ve opened an SSH console, please connect to the MySQL server using the following command:
An example on how to log in to a MySQL server using SSH$mysqladmin -u db_user password db_passwd Note: that db_user and db_passwd are your database username and database password
Once logged on to the server, you will see MySQL's SQL command line. Now you can add specific privileges to a user. Let's for example grant SELECT privileges to a user db_user for database 'db_base'. Here is the SQL query:
An example of how to add SELECT privileges to a user using GRANTGRANT SELECT ON db_base.* TO db_user@'localhost' IDENTIFIED BY 'db_passwd';
If SELECT is not enough for our user we can add more privileges using a query similar to the one below:
An example of how to add a selection of privileges to a user using GRANTGRANT SELECT, INSERT, DELETE ON db_base.* TO db_user@'localhost' IDENTIFIED BY 'db_passwd';
If you want to GRANT ALL the privileges to a user then use this query:
An example of how to Grant Privileges in MySQLGRANT ALL PRIVILEGES ON db_base.* TO db_user @'%' IDENTIFIED BY 'db_passwd';
As you see in the latest example we use '%' instead of localhost, which means that our user can use all the privileges from every host.
Sometimes you need to grant privileges to a user for a specific table. To specify the table, replace '*' in 'db_base.*' with your table's name.
An example of how to Grant Privileges in MySQLGRANT ALL PRIVILEGES ON db_base.phonebook TO db_user @'%' IDENTIFIED BY 'db_passwd';
Once you have given the desired privileges for your user, you will need to FLUSH privileges in order to complete the setup and to make the new settings work. To do so, run this command within the SQL command prompt:
An example of how to FLUSH privilegesFLUSH PRIVILEGES;