Виктор Гольцман - MySQL 5.0. Библиотека программиста
- Название:MySQL 5.0. Библиотека программиста
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Виктор Гольцман - MySQL 5.0. Библиотека программиста краткое содержание
Эта книга предназначена для всех, кто желает освоить СУБД MySQL. Для ее чтения вам не нужны никакие специальные знания – достаточно быть пользователем Windows. Вы узнаете, как установить и запустить MySQL, как создать собственную базу данных, как работать с данными при помощи команд SQL, как администрировать базу данных и оптимизировать ее работу. Разработчики веб-приложений на языках PHP, Perl и Java найдут в этой книге полезные сведения по использованию базы данных MySQL в соответствующих приложениях. Для всех операций, которые вам предстоит выполнить, приводятся подробные пошаговые инструкции, все основные действия поясняются на примере учебной базы данных.
MySQL 5.0. Библиотека программиста - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
[(<���Список столбцов>)] ON <���Область действия>
TO <���Идентификатор пользователя>
[WITH GRANT OPTION];В качестве области действия вы можете указать одно из следующих значений:
• *.* – привилегия будет действовать глобально;
• <���Имя базы данных>.* – привилегия будет действовать для указанной базы данных;
• * – привилегия будет действовать для базы данных, которая в момент выполнения команды GRANT являлась текущей;
• <���Имя базы данных>.<���Имя таблицы> или <���Имя таблицы> – привилегия будет действовать для указанной таблицы (если имя базы данных не указано, подразумевается текущая база данных). Если требуется создать привилегию не для всей таблицы, а только для отдельных столбцов, необходимо перечислить эти столбцы в скобках перед ключевым словом ON.
Рассмотрим несколько примеров.
• GRANT CREATE ON *.* TO \'anna\'@\'localhost\
Команда предоставляет пользователю anna\'@\'localhost привилегию на создание баз данных и таблиц в любой базе данных.
• GRANT DROP ON SalesDept.* TO \'anna\'@\'localhost\
Команда предоставляет пользователю anna\'@\'localhost привилегию на удаление таблиц в базе данных SalesDept (Отдел продаж), а также на удаление самой базы данных SalesDept.
• GRANT SELECT ON SalesDept.Products TO \'anna\'@\'localhost\ Команда предоставляет пользователю anna\'@\'localhost привилегию на получение данных из таблицы Products (Товары) базы данных SalesDept (Отдел продаж).
• GRANT UPDATE (price) ON SalesDept.Products TO \'anna\'@\'localhost\ Команда предоставляет пользователю anna\'@\'localhost привилегию на изменение данных в столбце price (цена) таблицы Products (Товары).
При назначении привилегий необходимо иметь в виду следующие особенности.
• Если учетная запись с указанным идентификатором не существует, команда GRANT может создать такую запись. Отключить автоматическое создание учетной записи позволяет ключевое слово NO_AUTO_CREATE_USER в значении переменной sql_mode (напомню, что настройку режима взаимодействия с сервером MySQL мы обсуждали в подразделе «Вставка отдельных строк» главы 2).
• Привилегию ALTER рекомендуется предоставлять с осторожностью: путем переименования таблиц и столбцов пользователь может изменить настройки системы привилегий.
• Если при создании привилегии вы указываете параметр WITH GRANT OPTION, то пользователь получает возможность «делиться» не только созданной привилегией, но и другими своими привилегиями в рамках данной области действия. Например, после выполнения командGRANT SELECT ON *.* TO \'marina\
GRANT INSERT ON SalesDept.* TO \'marina\' WITH GRANT OPTION;
GRANT DELETE ON SalesDept.Customers TO \'marina\пользователь marina может предоставлять другим пользователям следующие привилегии:
– привилегии SELECT, INSERT и GRANT OPTION на уровне базы данных SalesDept (Отдел продаж). Хотя сам пользователь marina имеет глобальную привилегию SELECT, его возможности делегирования привилегий ограничены базой данных SalesDept;
– привилегию DELETE на уровне таблицы Customers (Клиенты) базы данных SalesDept, так как область действия этой привилегии входит в область действия привилегии GRANT OPTION.
• Если вы предоставляете привилегию GRANT OPTION нескольким пользователям, эти пользователи могут «обменяться» привилегиями, то есть объединить свои наборы привилегий.
• Привилегии, областью действия которых является таблица или столбец, вступают в силу немедленно – пользователь может сразу же начать выполнять SQL-команды, разрешенные ему новой привилегией. Привилегии, относящиеся к базе данных, начинают действовать после выполнения команды USE <���имя базы данных>, то есть после выбора какой-либо базы данных в качестве текущей. Глобальные привилегии начинают применяться при следующем подключении пользователя к серверу MySQL.
Итак, вы познакомились с командой добавления привилегий. В следующем подразделе мы рассмотрим команду отмены привилегий.
Отмена привилегий
Чтобы удалить привилегию, ранее назначенную пользователю, используется командаREVOKE <���Тип привилегии>
[(<���Список столбцов>)] ON <���Область действия>
FROM <���Идентификатор пользователя>;Например,:
• REVOKE CREATE ON *.* FROM \'anna\'@\'localhost\
Команда отменяет глобальную привилегию пользователя \'anna\'@\'localhost\', разрешавшую создание баз данных и таблиц.
• REVOKE DROP ON SalesDept.* FROM \'anna\'@\'localhost\ Команда отменяет привилегию пользователя \'anna\'@\'localhost\' на удаление базы данных SalesDept (Отдел продаж) и таблиц в этой базе данных.
• REVOKE SELECT ON SalesDept.Products
FROM \'anna\'@\'localhost\
Команда отменяет привилегию пользователя \'anna\'@\'localhost\' на получение данных из таблицы Products (Товары) базы данных SalesDept.
• REVOKE UPDATE (price) ON SalesDept.Products
FROM \'anna\'@\'localhost\
Команда отменяет привилегию пользователя \'anna\'@\'localhost\' на изменение данных в столбце price (цена) таблицы Products (Товары).
Параметры команды REVOKE имеют тот же смысл, что и параметры команды GRANT. Аналогичны и правила вступления изменений в силу.
Отметим, что в MySQL при удалении баз данных, таблиц и столбцов связанные с ними привилегии не удаляются автоматически; для удаления таких привилегий требуется выполнить команду REVOKE.
Теперь вы знаете, как добавлять и удалять привилегии доступа. В следующем подразделе мы обсудим, как получить информацию о зарегистрированных привилегиях.
Просмотр привилегий
Сведения о привилегиях доступа содержатся в следующих таблицах системной базы данных mysql.
• Глобальные привилегии хранятся в таблице user (пользователь), которая уже знакома нам из предыдущего раздела. Каждому типу привилегии соответствует отдельный столбец, допускающий значения \'Y\' (операция разрешена) и \'N\' (операция не разрешена).
• Привилегии, областью действия которых является отдельная база данных, хранятся в таблице db (база данных). Первичный ключ в этой таблице образуют столбцы Host (хост), Db (база данных) и User (пользователь). Таким образом, каждая строка таблицы определяет привилегии одного пользователя по отношению к одной базе данных. Как и в таблице user, каждой привилегии соответствует отдельный столбец, возможными значениями которого являются \'Y\' и \'N\'.Примечание
При проверке доступа пользователей к базе данных используется также таблица host. Однако команды GRANT и REVOKE не затрагивают эту таблицу, и обычно она остается пустой.
• Привилегии, относящиеся к отдельным таблицам, хранятся в таблице tables_ priv. Первичным ключом в этой таблице служат столбцы Host (Хост), Db (База данных), User (Пользователь) и Table_name (Имя таблицы). Таким образом, каждая строка таблицы tables_priv определяет привилегии доступа конкретного пользователя к конкретной таблице. Типы привилегий, которыми обладает пользователь, перечислены в столбце Table_priv (Привилегии доступа к таблице), имеющем тип данных SET. Кроме того, в таблице tables_priv имеется столбец Column_priv (Привилегии доступа к столбцу) с типом данных SET, значение которого указывает, что у пользователя имеются привилегии доступа к отдельным столбцам таблицы.
Читать дальшеИнтервал:
Закладка: