|
Программирование >> Создание клиентов mysql
Password CHAR(16) Select priv ENUM(N, Insert priv ENUMCN, Update priv ENUM( N , Delete priv ENUM{N, Create priv ENUM(N, Drop priv ENUM(N, Reload priv ENUM(N, Shutdown priv ENUM(N, Processriv ENUM(N, BINARY NOT NULL DEFAULT Y) NOT NULL DEFAULT N, Y*) NOT NULL DEFAULT N , Y ) NOT NULL DEFAULT N , Y) NOT NULL DEFAULT N, Y) NOT NULL DEFAULT N, Y) NOT NULL DEFAULT N , Y ) NOT NULL DEFAULT N , Y ) NOT NULL DEFAULT N Y) NOT NULL DEFAULT N , File priv ENUM(N, Grant priv ENUMCN, Y) Referencesriv ENUM(N, Index priv ENUM(N, Y) Alter priv ENUMCN, Y) PRIMARY KEY (Host, User) NOT NULL DEFAULT NOT NULL DEFAULT N, Y) NOT NULL DEFAULT NOT NULL DEFAULT N, NOT NULL DEFAULT N TYPE=MyISAM COMMENT=Users and global privileges; За каждым пользователем каждого узла в таблице user закреплен свой набор привилегий, заданнхх в виде перечислений со значениями N. В столбце Host содержится IP-адрес либо доменное им тютера. Разрешается использовать метасимволе! % и для задания диапазона адресов. Например, выражение kinson. comcooTBeTCi Схема привилегий 489 именем пользователе оп. Поскольку подобный выбор не всегда очевиден, лучше избегать пустгх имен пользователей. Таблицы db и host совместнжонтролируют доступ к базам данных. Подобно таблице user, в таблице db не допускаются имена пользователей с метасимволами. При выполнении операций сравнения программа MySQL сортирует записи этой таблицы в таком порядке: имя узла, имя базы данных, имя пользователя. Другими словами, сначала выбирается наиболее точное имя узла, затем- наиболее точное имя базы данных, а затем - наиболее точное имя пользователя. Записи таблицы host сортируются сначала по имени узла, потом - по имени базы данных. Таблицы columns priv и tables priv допускают наличие метасимволов в столбце Host, но не вдругих столбцах. Поэтому, чтобы предоставить пользователю права доступа ктрем столбцам таблицы, нужно задать три записи в таблице columnsjpriv. В табл. 27.2 перечислены столбцы привилегий, встречающиеся в таблицах. Смысл каждого из них определяется таблицей, в которой он присутствует. Запись таблицы db применима ко всем таблицам базы данных. Привилегии, заданные в таблице user, являются глобальными. Есть привилегии, которые определены только на глобальном уровне. Например, право перезагрузки позволяет пользователю очищать кэш-буферы, совместно используемые всеми соединениями и базами данных. Столбец Alter priv Create priv Deletepriv Drop j3riv File j>riv Grant priv Index priv Insertpriv Process priv Reload priv References priv Select priv Shutdown priv Updatepriv Описание Пользователь может вводить инструкцию ALTER TABLE Пользователь может создавать таблицы и базы данных Пользователь может вводить инс трукцию DELETE Пользователь может удалять таблицы и базы данных Пользователь может обращаться к файлам локальной файловой системы Пользователь может передавать свои привилегии другим пользователям \ Пользователь может добавлять или удалять индексы Пользователь может вводить инструкцию INSERT Пользователь может просматривать список соединений и удалять соединения Пользователь может очищать буферы Соответствующая привилегия еще не реализована Пользователь может создавать запросы к таблицам (инструкция SELECT) Пользователь может останавливать сервер Пользователь может вводить инструкцию UPDATE Названия привилегий в большинстве своем соответствуют названиям инструкций SQL, поэтому легко понять, какие права получают пользовател и благодаря той или иной привилегии. Привилегия Alter позволяет пользователю менять определения таблиц. Привилегия Create дает возможность, в зависимости от контекста, создавать таблицы или базы данных. Привилегия Delete разрешает удалять записи таблиц, а привилегия Drop - сами таблицы или базы данных. Привилегия Index позволяет создавать и удалять индексы, привилегия Insert - вставлять записи в таблицы, а привилегии Select и Update - выполнять инструкции SELECT и UPDATE соответственно. Привилегия File разрешает пользователям выполнять инструкцию LOAD DATA INFILE, а также инструкцию SELECT с предложением INTO OUTFILE. Она определяет лишь возможность чтения и записи файлов на сервере. Естественно, помимо этого пользователь должен иметь право чтения и записи самой таблицы. Файловые операции осуществляются от имени пользователя, запустившего демон mysqld. Операционная система может налагать на него свои ограничения, чтобы демон не повредил важные системные файлы. Привилегия Grant позволяетпользователю вызывать инструкцию GRANT для передачи своих привилегий другим пользователям. В инструкции GRANT разрешается указывать только те привилегии, которыми владеет текущий пользователь. Например, если пользователь имеет только право создавать таблицы, то он не сможет выполнить инструкцию GRANT RELOAD. Привилегия Process дает пользователю возможность просматривать список соединений с помощью инструкции SHOW PROCESSLIST и удалять любое соединение при помощи инструкции KILL. Подобной привилегией владеют только администраторы, имеюш,ие доступ к утилите mysqladmin. Привилегия Reload позволяет пользователю вводить любую из инструкций FLUSH, описанных в главе 13, Инструкции SQL . Обхчно кэш-буферы не требуют очистки, за исключением ряда случаев. При непосредственном редактировании табличных файлов необходимо очистить табличный буфер. Если таблицы привилегий меняются в обход инструкций GRANT и REVOKE, то нужно очистить буфер привилегий. Рядовым пользователямданная привилегия не нужна. Привилегия Shutdown разрешает пользователю завершать работу демона mysqld. Привилегия на запуск сервера не существует, ведь если нет серверного процесса, то и некому проверять привилегию! Для перезапуска сервера необходим пользователь, обладающий соответствующими правами на уровне операционной системы. Например, в Linux пользовательгоо! может вызвать сценарий safe mysqld. Программа MySQL проверяет привилегии для каждой инструкции, вводимой пользователем. Процесс проверки таблиц проиллюстрирован на рис. 27.1. Как только программа находит нужную привилегию, она прекращает дальнейший поиск. В первую очередь просматривается таблица user. Обычно у рядовых пользователей нет глобальных привилегий, поэтому программа переходит к таблицам db и host. Каждая запись таблицы db описывает права доступа к заданной базе данных. Если поле Host является пустым, соответствующая запись должна присутствовать в таблице host. В данном случае программа выбирает только те привилегии, которые определены в обеих таблицах. Например, если в таблице db пользователю выдается привилегия Update, а в таблице host - нет, программа не разрешит пользователю обновлять все таблицы базы данных.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |