Значение | Описание |
---|---|
alter | Изменять таблицы и индексы |
create | Создавать базы данных и таблицы |
delete | Удалять данные из базы данных. |
drop | Удалять базы данных и таблицы |
index | Управлять индексами |
insert | Вставлять данные в базу данных |
lock tables | Разрешает блокировать таблицы |
select | Извлекать данные |
update | Изменять данные |
all | Все вышеперечисленные |
У некоторых прав доступа есть дополнительные опции. Например, create view
Объект, которому вы предоставляете данные права, обозначается как
databasename.tablename
и в лучших традициях Linux *
*.*
означает все объекты в каждой базе данных, a foo.*
— все таблицы в базе данных foo
.Если заданный пользователь уже существует, права доступа корректируются с учетом вносимых вами изменений. Если такого пользователя нет, он создается с заданными правами доступа. Как вы уже видели, пользователей можно задавать на определенных компьютерах. Пользователя и компьютер следует задавать в одной команде для того, чтобы в полной мере использовать гибкость схемы предоставления прав доступа MySQL.
В синтаксисе языка SQL специальный символ %
*
в среде командной оболочки. Вы можете формировать отдельные команды для каждого требуемого набора прав доступа, но если, например, вы хотите предоставить доступ пользователю rick с любого компьютера в домене wiley.com, пользователя rick можно описать какrick@'%.wiley.com'
Символ подстановки %
Вы также можете применять нотацию IP/Netmask (N.N.N.N/M.M.M.M), задающую сетевой адрес для управления доступом.
Также, как раньше вы использовали описание rick@'192.163.0.0/255.255.255.0'
rick@'192.168.0.1'
для ограничения доступа пользователя rick единственной рабочей станцией или ввести rick@'192.0.0.0/255.0.0.0'
, расширив область действия прав до любой машины в сети 192 класса А.В еще одном примере команда
mysql> GRANT ALL ON foo.* TO rick@'%' IDENTIFIED BY 'bar';
создает пользователя rick с полным набором прав доступа к базе данных foo
bar
.Если базы данных foo
create database
.Ключевые слова IDENTIFIED BY
Следует быть особенно внимательными, имея дело с именами пользователей, компьютеров или баз данных, содержащими знак подчеркивания, поскольку символ _
%
соответствует любой строке символов. Везде, где это возможно, старайтесь избегать использования символа подчеркивания в именах пользователей и баз данных.Обычно ключевые слова with grant option
with grant option
обдуманно.Естественно, администратор не может только предоставлять права, но также и лишает прав. Делается это с помощью команды revoke
revoke <
и с применением почти такого же формата, как в команде grant
mysql> REVOKE INSERT ON foo.* FROM rick@'%';
Но команда revoke
revoke
для удаления его прав. Затем вы сможете полностью удалить его из таблицы пользователей user
, переключившись на внутреннюю базу данных mysql
и удалив соответствующие строки из таблицы user
.mysql> use mysql
mysql> DELETE FROM user WHERE user = "rick"