Grant CREATE TABLE permission to MySQL User

Ahmad picture Ahmad · Sep 2, 2015 · Viewed 20.7k times · Source

I have a database that is shared between some users, and I want to manage their permissions on this.

I want to give permission for creating a new table, and accessing (select, insert, update, delete) to that table of course, to a user that doesn't have full permission on the database (only he has SELECT access to some tables).

So, I executed this query:

GRANT CREATE ON eh1 TO user1

Then, when I logged in with that user and tried to create a new table, I got this error:

1142 - CREATE command denied to user 'user1'@'localhost' for table 'folan'

What is the problem here? How can I do that?

UPDATE

The problem solved partially by changing the command to this:

GRANT CREATE ON eh1.* TO user1

Now there is another problem, that the user1 cannot select or insert into the newly created table. The reason is understandable, but is there a way to solve this?

Thanks

Answer

Zafar Malik picture Zafar Malik · Sep 2, 2015

use as per below-

GRANT CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';

Note: '%' will provide access from all ips, so we should provide rights to specific ip instead of all ips, so change '%' with any ip like '191.161.3.1'

If user need select/insert/update/delete/create rights then syntax will be -

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';

Update as per user requirement:

GRANT CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';
GRANT SELECT, INSERT, UPDATE ON eh1.table1 TO user1@'%';
GRANT SELECT, INSERT, UPDATE ON eh1.table2 TO user1@'%';