Шрифт:
Интервал:
Закладка:
databasename.tablename
и в лучших традициях Linux * — ссылка на любое имя, поэтому *.* означает все объекты в каждой базе данных, a foo.* — все таблицы в базе данных foo.
Если заданный пользователь уже существует, права доступа корректируются с учетом вносимых вами изменений. Если такого пользователя нет, он создается с заданными правами доступа. Как вы уже видели, пользователей можно задавать на определенных компьютерах. Пользователя и компьютер следует задавать в одной команде для того, чтобы в полной мере использовать гибкость схемы предоставления прав доступа MySQL.
В синтаксисе языка SQL специальный символ % — символ подстановки, во многом сходный, с символом * в среде командной оболочки. Вы можете формировать отдельные команды для каждого требуемого набора прав доступа, но если, например, вы хотите предоставить доступ пользователю rick с любого компьютера в домене wiley.com, пользователя rick можно описать как
[email protected]'%.wiley.com'
Символ подстановки % всегда следует заключать в кавычки для того, чтобы отделить его от остальных текстовых данных.
Вы также можете применять нотацию IP/Netmask (N.N.N.N/M.M.M.M), задающую сетевой адрес для управления доступом.
Также, как раньше вы использовали описание [email protected]'192.163.0.0/255.255.255.0' для предоставления пользователю rick доступа с любого сетевого компьютера, можно задать [email protected]'192.168.0.1' для ограничения доступа пользователя rick единственной рабочей станцией или ввести [email protected]'192.0.0.0/255.0.0.0', расширив область действия прав до любой машины в сети 192 класса А.
В еще одном примере команда
mysql> GRANT ALL ON foo.* TO [email protected]'%' IDENTIFIED BY 'bar';
создает пользователя rick с полным набором прав доступа к базе данных foo для подключения с любой машины с начальным паролем bar.
Если базы данных foo до сих пор не существует, у пользователя rick теперь появится право создать ее с помощью команды SQL create database.
Ключевые слова IDENTIFIED BY — не обязательная часть команды, но убедиться в том, что у всех пользователей во время их создания появляются пароли, совсем неплохо.
Следует быть особенно внимательными, имея дело с именами пользователей, компьютеров или баз данных, содержащими знак подчеркивания, поскольку символ _ в языке SQL соответствует любому одиночному символу во многом так же, как знак % соответствует любой строке символов. Везде, где это возможно, старайтесь избегать использования символа подчеркивания в именах пользователей и баз данных.
Обычно ключевые слова with grant option применяются только для создания вспомогательного административного пользователя, но они также могут использоваться для разрешения вновь созданному пользователю получить права доступа, предоставляемые ему другими пользователями. Всегда применяйте ключевые слова with grant option обдуманно.
revokeЕстественно, администратор не может только предоставлять права, но также и лишает прав. Делается это с помощью команды revoke.
revoke <привилегия> on <объект> from <пользователь>
и с применением почти такого же формата, как в команде grant. Например:
mysql> REVOKE INSERT ON foo.* FROM [email protected]'%';
Но команда revoke не удаляет пользователей. Если вы хотите удалить пользователя окончательно, не просто измените его права доступа, а примените команду revoke для удаления его прав. Затем вы сможете полностью удалить его из таблицы пользователей user, переключившись на внутреннюю базу данных mysql и удалив соответствующие строки из таблицы user.
mysql> use mysql
mysql> DELETE FROM user WHERE user = "rick"
mysql> FLUSH PRIVILEGES;
Отказавшись от указания компьютера, вы обеспечите удаление всех записей, относящихся к пользователю MySQL, в данном случае rick, которого хотите удалить. После этого убедитесь в том, что вы вернулись в вашу базу данных (с помощью команды use), иначе вы можете случайно продолжить работу с собственной внутренней базой данных MySQL.
ПримечаниеИмейте в виду, что команда delete не относится к группе команд grant и revoke. Синтаксис SQL делает ее применение необходимым из-за способа обработки прав доступа в MySQL. Вы напрямую обновляете таблицы прав доступа MySQL (поэтому первой применяется команда use mysql) для внесения нужных вам изменений эффективным способом.
После обновления таблиц, как показано в примерах, вы должны применить команду FLUSH PRIVILEGES, чтобы сообщить серверу MySQL о необходимости перезагрузки таблиц с правами доступа.
Пароли
Если вы хотите задать пароли для уже существующих пользователей, не имевших их до сих пор, или изменить собственный или чей-то пароль, следует подключиться к серверу MySQL как пользователь root и напрямую обновить данные пользователя. Например,
mysql> use mysql
mysql> SELECT host, user, password FROM user;
Вы должны получить перечень, похожий на следующий:
+-----------+------+------------------+
| host | user | password |
+-----------+------+------------------+
| localhost | root | 67457e226a1a15bd |
| localhost | foo | |
+-----------+------+------------------+
2 rows in set (0.00 sec)
Если вы хотите присвоить пароль bar пользователю foo, можно сделать следующее:
mysql> UPDATE user SET password = password('bar') WHERE user = 'foo';
Для проверки выведите снова соответствующие столбцы таблицы пользователей user:
mysql> SELECT host, user, password FROM user;
+-----------+------+------------------+
| host | user | password |
+-----------+------+------------------+
| localhost | root | 65457e236glalwbq |
| localhost | foo | 7c9e0a41222752fa |
+-----------+------+------------------+
2 rows in set (0.00 sec) mysql>
Теперь наверняка у пользователя foo есть пароль. Не забудьте вернуться в свою исходную базу данных.
Начиная с версии MySQL 4.1, схема формирования паролей обновлена по сравнению с более ранними версиями. Но для обратной совместимости вы все еще можете задавать пароль, применяя старый алгоритм с функцией OLD_PASSWORD('password to set'), если вам это нужно.
Создание базы данных
Следующий ваш шаг — создание базы данных. Предположим, что вам нужна база данных с именем rick. Напоминаем о том, что вы уже создали пользователя с тем же именем. Сначала надо предоставить пользователю rick широкий ряд полномочий, чтобы он мог создавать новые базы данных. В среде разработки это особенно полезно, т. к. обеспечивает больше гибкости.
mysql> GRANT ALL ON *.* TO [email protected] IDENTIFIED BY 'secretpassword';
Теперь протестируйте набор прав доступа, зарегистрировавшись как rick, и создайте базу данных:
$ mysql -u rick -р
Enter password:
...
mysql> CREATE DATABASE rick;
Query OK, 1 row affected (0.01 sec).
mysql>
Далее сообщите MySQL о том, что вы хотите переключиться на вашу новую базу данных:
mysql> use rick
Сейчас вы можете ввести в вашу базу данных таблицы и нужные вам данные. Во время последующих регистрации вы сможете задавать базу данных в конце командной строки и избежать применения команды use.
$ mysql -u rick -p rick
Введя после подсказки пароль, вы автоматически, в ходе процесса подключения, переключитесь на использование базы данных rick по умолчанию.
Типы данных
Итак, у вас есть действующий сервер MySQL, безопасная регистрация вашего пользователя и база данных, готовая к применению. Что дальше? Сейчас нужно создать несколько таблиц со столбцами для хранения данных. Но прежде чем вы сможете сделать это, следует узнать о типах данных, поддерживаемых MySQL.
Типы данных MySQL довольно обычны, поэтому мы лишь бегло пробежимся по основным типам, и как всегда более подробную информацию можно найти в руководстве по MySQL на Web-сайте MySQL.
Тип BooleanСтолбец логического типа можно определить с помощью ключевого слова BOOL. Как вы и ожидали, в нем могут храниться значения TRUE и FALSE, а также специальное "неопределенное" значение баз данных NULL.
Символьный типВ табл. 8.7 перечислены все доступные символьные типы. Первые три — стандартные, оставшиеся три специфичны для MySQL. Мы полагаем, что на практике вы будете придерживаться стандартных типов.
Таблица 8.7
Определение Описание CHAR Одиночный символ CHAR(N) Символьная строка длиной точно N символов, которая будет при необходимости заполняться пробелами. Максимальная длина 255 символов VARCHAR(N) Массив переменной длины из N символов. Максимальная длина 255 символов TINYTEXT Аналогичен VARCHAR(N) MEDIUMTEXT Текстовая строка длиной до 65 535 символов LONGTEXT Текстовая строка длиной до 2³²–1 символов Числовой типВ табл. 8.8 показано, что числовые типы делятся на целочисленные и типы с плавающей точкой.
- Linux - Алексей Стахнов - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Linux Mint и его Cinnamon. Очерки применителя - Алексей Федорчук - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- ELASTIX – общайтесь свободно - Владислав Юров - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Сергей Вавилов - Программное обеспечение
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение