|
Программирование >> Создание клиентов mysql
GRANT Инструкция GRANT предоставляем анным пользователям требуемые привилегии, создавая учетную запись пользователя в случае необходимости. Общий формат инструкции таков: GRANT ти ...)][, тип [ (столбец, . . .) ] . . . ] on таблица ТО пользователь{<узел] [IDENTIFIED BY пароль] [, пользователь [IDENTIFIED BY пароль] ...] [WITH GRANT OPTION] Возможные типы привилегий перечислены в табл. 13.3. Привилегии в1даются в зависимости от контекста: глобально, для конкретной базы данных, таблицы или столбца. Некоторые привилегии имеют смысл лишь в определенном контексте. К примеру, для столбцов допустимы привилегии INSERT, SELECT и UPDATE. К таблицам и базам данных применимы эти же привилегии, плюс ALTER, CREATE, DELETE, DROP и INDEX. Следующие привилегии являются глобальными: FILE, PROCESS, RELOAD и SHUTDOWN. Тип all [privileges] ALTER CREATE DELETE DROP file INDEX insert process REFERENCES RELOAD select SHUTDOWN UPDATE USAGE Описание Пользователю предоставляются все права, кроме права самостоятельной передачи привилегий Пользователь может вводить инструкцию ALTER TABLE Пользователь может создавать таблицы и базы данных Пользователь может вводить инструкцию DELETE Пользователь может удалять таблицы и базы данных Пользователь получает доступ к файлам на локальном диске и может выполнять репликацию Пользователь может добавлять и удалять индексы Пользователь может вводить инструкцию INSERT Пользователь может просматривать список активных потоков и удалять потоки Никак не интерпретируется в версии 3.23 Пользователь может очищать кэш-буферы Пользователь может создавать запросы к таблицам Пользователь может останавливать работу сервера Пользователь может вводить инструкцию UPDATE Пользователь не имеет никаких прав и может лишь регистрироваться на сервере Полный список инструкций 227 Предложение ON и список столбцов задают контекст привилегии. Таблица может идентифицироваться по собственному имени либо в сочетании с именем базы данных. Метасимвол * соответствует всем объектам диапазона. Например, записи ге. * означает выдачу привилегий для всех таблиц базы данных store (листинг 13.27). Отдельный символ * соответствует всем таблицам текущей базы даннгх. В случае записи * . * привилегии являются глобальными. GRANT SELECT, INSERT, UPDATE, DELETE ON store. * TO gwb@ % . whitehouse. gov WITH GRANT OPTION Имя пользователя - это строка длиной не более 16 символов. Если вслед за этим именем стоят символ @ и сетевое имя, то привилегия применима только тогда, когда пользователь регистрируется на сервере с указанного компьютера. Имена пользователя и компьютера необходимо заключать в кавычки, когда в них присутствуют метасимволы. Например, запись 1еоп@ .net обозначает пользователе on, подключающегося с любого компьютера домена Вместо сетевого имени может стоять и IP-адрес. Если же узел вообще не указан, то информация о том, какому узлу принадлежит пользователь, не будет учитываться. Предложение IDENTIFIED BYзадает пароль пользователя. Если учетная запись пользователя уже существует, его пароль меняется. Задать пароль можно также с помощью инструкции SET. Спецификация WITH GRANT OPTIONS разрешает пользователю предоставлять аналогичные привилегиидругим пользователям. Инструкция GRANTS выводит список привилегий, которыми владеет поль- зователь. INSERT Инструкция INSERT добавляет записи в таблицу. Ее синтаксис таков: INSERT [LOW PRIORITY DELAYED] [IGNORE] [INTO] таблица {{столбец, . . .)] {VALUES (значение,...),(...),... j запрос \ SET столбец=значение,. . .) Можно задавать строки в виде набора литеральных значений или в виде таблицы результатов запроса. В первом случае порядок следования значений соответствует порядку столбцов, указанному в определении таблицы либоздесь же, в круглых скобках после имени таблицы. Предложение SET позволяет явно указывать, к какому столбцу относится конкретное значение. Флаг LOW PRIORITYГоворит о том, что операция вставки должна быть отложена до того момента, пока не будут закончены все операциичтения. Во время самой вставки на таблицу накладывается жесткая блокировка. Поскольку таблицы типАМ допускают одновременные вставки, использовать флаг LOWPRIORITY нежелательно. Клиентская программа блокируется до момента завершения инструкции INSERT, что не всегда удобно. Флаг DELAYED отменяет такую установку, помещая инструкцию INSERT в очередь и немедленно возвращая управление программе. Этот флаг применим лишь к таблицам типа MylSAM. Флаг IGNORE подавляет вывод сообщений об ошибках, выдаваемых в случае обнаружения дубликатов. Обычно, если вставляемая запись нарушает целостность первичного ключа или ограничение уникальности, отменяется вся операция вставки. При наличии флага IGNORE дублирующаяся запись будет отброшена, и операция продолжится. Для замены дубликатов воспользуйтесь инструкцией REPLACE. Тип вводимого значения должен соответствовать типу столбца, которому оно сопоставлено. Список, приводимый после имени таблицы, может содержать имена столбцов в произвольном порядке. Столбцам, не указанным в списке, будут присвоены значения по умолчанию. Например, четчик записывается следующее целое число. После ключевого слова VALUES в скобках приводится набор значений, разделенных запятыми. Разрешается в одном предложении VALUES вводить значения сразу для нескольких записей, что запрещено в стандарте (листинг 13.28). INSERT IGNORE INTO team (Name) VALUES (Bulldogs), (Saints), (Giants) В списке значений могут присутствовать выражения. В состав выражений могут входить ссылки на вставляемые столбцы, но лишь на те из них, которые упоминаются раньше. В листинге 13.29 демонстрируется вставка записи с одновременным вычислением текущего года и среднего значений четырех столбцов. INSERT INTO performance (FiscalYear, Ql, Q2, Q3, Q4, Mean) VALUES (NOWO, 0.15, 0.07, 0.13, 0.24, (Q1+Q2+Q3+Q4)/4) В предложении SET указывается список имен столбцов и соответствующих им значений. В этом случае список столбцов после имени таблицы не нужен (листинг 13.30). INSERT IGNORE INTO team SET Name=Bulldogs С помощью подчиненной инструкции SELECT можно отобрать группу записей для вставки в таблицу (листинг 13.31). Стандарт языка SQL запрещает ссылаться на одну и ту же таблицу в главной и подчиненной инструкции.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |