2015-09-02 5 views
2

У меня есть база данных, которая совместно используется некоторыми пользователями, и я хочу управлять их разрешениями на это.Предоставление разрешения CREATE TABLE для пользователя MySQL

Я хочу дать разрешение на создание новой таблицы и, конечно, доступ к этой таблице (выбрать, вставить, обновить, удалить) для пользователя, который не имеет полного разрешения на базу данных (только у него есть SELECT доступ к некоторым таблицам).

Итак, я выполнил этот запрос:

GRANT CREATE ON eh1 TO user1 

Затем, когда я вошел в с пользователем и попытался создать новую таблицу, я получил эту ошибку:

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

Что такое проблема здесь? Как я могу это сделать?

UPDATE

проблема частично решена путем изменения команды к этому:

GRANT CREATE ON eh1.* TO user1

Теперь есть еще одна проблема, что user1 не может выбрать или вставить в новую таблицу. Причина понятна, но есть ли способ решить эту проблему?

Благодаря

ответ

1

использование согласно ценам ниже

GRANT CREATE ON eh1.* TO [email protected]'%' IDENTIFIED BY 'user1_password'; 

Примечание: «%» обеспечит доступ со всех изобр, поэтому мы должны обеспечить права конкретного IP вместо всех изобр, поэтому изменения «%» с любым IP, как '191.161.3.1'

Если пользователю нужно выбрать/вставка/обновление/удаление/создание права, то синтаксис будет -

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON eh1.* TO [email protected]'%' IDENTIFIED BY 'user1_password'; 

Update согласно требованию пользователя:

GRANT CREATE ON eh1.* TO [email protected]'%' IDENTIFIED BY 'user1_password'; 
GRANT SELECT, INSERT, UPDATE ON eh1.table1 TO [email protected]'%'; 
GRANT SELECT, INSERT, UPDATE ON eh1.table2 TO [email protected]'%'; 
+0

Да, это сработало, но проблемы все еще есть. Пользователь не может выбирать строки из созданной таблицы. – Ahmad

+0

сначала проверьте, какие права нужны пользователю, и назначьте все необходимые права. Если пользователю необходимо проверить данные таблиц и вставить/обновить/удалить их, тогда права будут такими, какие я обновляю в своем ответе. –

+0

Я не хочу разрешать для доступа ко всем таблицам в базе данных. Только некоторые таблицы и таблицы, созданные им. – Ahmad

0

После this, правильный синтаксис

GRANT CREATE ON eh1.* TO user1 

С EH1 базой данных.

Если вы не используете «. *», Ваша база данных считается таблицей.

+0

Да, это сработало, но все еще есть проблема. Пользователь не может выбирать строки из созданной таблицы. – Ahmad

+0

Интересный вопрос .... Расследование по этому вопросу –

Смежные вопросы