А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я
0-9 A B C D I F G H IJ K L M N O P Q R S TU V WX Y Z #


Чтение книги "MySQL 5.0. Библиотека программиста" (страница 25)

   Обработка ошибок

   Изучая функции JDBC, вы узнали, что в случае возникновения ошибки все эти функции генерируют исключение SQLException. С помощью методов класса SQLException вы можете получить более подробные сведения об ошибке взаимодействия с базой данных. В частности, метод

   public String getMessage()

   возвращает описание ошибки, а метод

   public int getErrorCode()

   возвращает код ошибки. Эту информацию целесообразно отображать на вебстранице только при отладке сервлета; в дальнейшем, при эксплуатации сервлета, лучше записывать детальную информацию об ошибках в файл или отсылать на свой электронный почтовый ящик.
   В частности, чтобы сохранять сообщения об ошибках в log-файле, добавим в исходный код сервлета вызов метода

   public void log(«<Текст сообщения>»)

   класса HttpServlet:

   
   try {
   //Операции с базой данных
   
   //Обрабатываем исключение
   } catch (SQLException ex) {
   out.println(«Ошибка доступа к базе данных.»);
   out.println(«Приносим свои извинения»);
   //Записываем сообщение об ошибке в log-файл
   log(ex.getErrorCode() + « « +ex.getMessage());
   return;
   }
   

   Например, если модифицировать таким образом сервлет Input (см. листинг 4.19), то в случае отсутствия в базе данных таблицы Customers (Клиенты) в log-файл будет записано следующее сообщение:

   28.06.2008 11:15:00 org.apache.catalina.core.ApplicationContext log
   INFO: Input: 1146 Table 'salesdept.customers' doesn't exist

...
   Примечание
   При запуске сервлета в созданной нами среде разработки сервлетов сообщение об ошибке будет записано в файл <Корневая папка Tomcat>logslocalhost.<Текущая дата>.log. При использовании хостинга с поддержкой сервлетов уточните имя и местоположение log-файла у провайдера хостинга.
   Итак, вы узнали, каким образом исключение SQLException позволяет организовать обработку ошибок, возникших при обращении к базе данных. В завершение кратко обобщим основные сведения, рассмотренные в разделе 4.3 «Интерфейс с Java».

   Итоги

   В данном разделе вы научились работать с базой данных MySQL, используя следующие функции JDBC:
   • метод getConnection() класса DriverManager для подключения к базе данных, установки кодировки и выбора текущей базы данных;
   • методы createStatement() и prepareStatement() класса Connection для создания объектов, отвечающих за выполнение SQL-команды на сервере MySQL;
   • методы set<Тип данных>() класса PreparedStatement для подстановки значений в параметризованный запрос;
   • методы executeUpdate() классов Statement и PreparedStatement для выполнения SQL-команд изменения данных;
   • методы executeQuery() классов Statement и PreparedStatement для выполнения SQL-запросов;
   • методы next() и get<Тип данных>() класса ResultSet для получения отдельных значений из результата запроса;
   • методы getMessage() и getErrorCode() класса SQLException для обработки ошибок взаимодействия с базой данных.
   Разумеется, возможности интерфейса JDBC не исчерпываются перечисленными функциями. Полную информацию о JDBC вы найдете на странице http://java.sun.com/javase/6/docs/technotes/guides/jdbc/.
   Подведем теперь итоги главы.

   4.4. Резюме

   В данной главе вы познакомились с возможностями популярных языков веб-программирования – PHP, Perl и Java – по интеграции с базой данных MySQL. Хотя мы ограничились рассмотрением только самых необходимых функций, позволяющих подключаться к базе данных и выполнять SQL-команды, с помощью этих функций вы можете создавать широкий спектр динамических веб-приложений.
   Далее мы рассмотрим следующий важный аспект эксплуатации базы данных MySQL – профилактические действия, направленные на обеспечение безопасности и бесперебойного функционирования сервера.

   Глава 5
   Администрирование и безопасность

   В предыдущих главах вы изучали функциональные возможности СУБД MySQL – те возможности работы с данными, которые необходимы для решения ваших бизнес-задач. В этой главе мы рассмотрим вспомогательные, но не менее важные процессы: управление доступом пользователей к базе данных и предотвращение потерь данных в случае сбоев. Мы расскажем, как выполнять операции администрирования с помощью специальных SQL-команд, утилит командной строки, а также с помощью графической утилиты MySQL Administrator.
   В первую очередь речь пойдет о разграничении доступа пользователей MySQL. Контроль действий пользователей включает два этапа:
   • когда пользователь пытается подключиться к серверу баз данных, программа MySQL проверяет, разрешено ли ему подключение, то есть проверяет его учетную запись;
   • когда пользователь пытается выполнить какую-либо операцию, программа MySQL проверяет, имеет ли пользователь привилегию, разрешающую эту операцию.
   Следующий раздел посвящается операциям с учетными записями пользователей MySQL. Систему привилегий доступа мы рассмотрим в разделе 5.2 «Система привилегий доступа».

   5.1. Учетные записи пользователей

   В этом разделе мы рассмотрим настройку учетных записей. Вы узнаете, как зарегистрировать или удалить пользователя MySQL, как изменить его пароль и как получить информацию о зарегистрированных пользователях.

   Общие сведения об учетных записях

   Под учетной записью пользователя MySQL подразумевается строка в таблице user (Пользователь) системной базы данных mysql. Первичным ключом в этой таблице служат столбцы Host и User. Таким образом, в MySQL идентификация пользователя основана не только на имени пользователя, но и на комбинации имени пользователя и хоста, с которого подключается пользователь. Это означает, что вы не просто можете ограничить круг хостов, с которых разрешено подключаться данному пользователю; вы можете, например, создать разные учетные записи (а следовательно, назначить разные привилегии доступа) для пользователя anna, подключающегося с компьютера localhost, и для пользователя anna, подключающегося с компьютера somedomain.com.
   Столбец User допускает значения длиной не более 16 символов. Значение этого столбца может быть пустым, что соответствует анонимному пользователю, но в этой книге мы не будем рассматривать такую возможность.
   Столбец Host допускает следующие значения:
   • конкретное имя компьютера или IP-адрес;
   • маска подсети (например, 192.168.1.0/255.255.255.0);
   • маска имени компьютера или маска IP-адреса, которая может содержать подстановочные символы:
   % – на месте знака процента может быть любое количество произвольных символов;
   _ – на месте знака подчеркивания может быть ровно один произвольный символ.
...
   Примечание
   Если маска начинается с цифры или точки, то она рассматривается как маска IP-адреса. Поэтому значение «122.somedomain.com» не соответствует маске «122.%».
   В командах, управляющих учетными записями пользователей MySQL, используется идентификатор пользователя – значение первичного ключа учетной записи в формате

   '<Значение столбца User>'[@'<Значение столбца Host>']

   Например, 'anna'@'localhost'. Если значение столбца Host не указано, подразумевается маска %, так что идентификаторы 'anna' и 'anna'@ % эквивалентны.
   При подключении пользователя к серверу MySQL происходит идентификация пользователя – поиск соответствующей ему учетной записи. Поиск начинается с тех строк таблицы user, в которых значение столбца Host не содержит подстановочных символов. Поэтому, например, если в таблице зарегистрированы две учетные записи с идентификаторами, соответственно, 'anna'@ % и 'anna'@'localhost', то при подключении пользователя с именем anna с локального компьютера будет выбрана вторая из них.
   После определения учетной записи выполняется аутентификация (проверка подлинности) пользователя, которая заключается в сравнении введенного пользователем пароля с паролем учетной записи, который хранится в столбце Password таблицы user (обратите внимание, что пароли хранятся и передаются только в зашифрованном виде). Если пароль указан правильно, то первый этап контроля доступа завершается успешно и устанавливается соединение клиентского приложения с сервером.
...
   Примечание
   Имена пользователей и пароли чувствительны к регистру символов, а имена хостов – не чувствительны.
   Теперь, изучив особенности идентификации и аутентификации пользователей MySQL, вы можете переходить к регистрации новых пользователей.

   Регистрация пользователя

   Чтобы создать учетную запись пользователя, выполните команду

   CREATE USER <Идентификатор пользователя>
   [IDENTIFIED BY [PASSWORD] '<Пароль>'];

   Обязательным параметром этой команды является идентификатор нового пользователя. Если не задан параметр IDENTIFIED BY, то будет использоваться пустой пароль.
   Параметр PASSWORD необходимо указать в том случае, если вы вводите не реальный, а зашифрованный пароль (что позволяет избежать передачи незашифрованного пароля при отправке на сервер команды CREATE USER). Получить зашифрованное значение из реального пароля вы можете с помощью функции

   PASSWORD('<Реальный пароль>')

   Например, команда

   CREATE USER 'anna' IDENTIFIED BY 'annapassword';

   создает учетную запись для пользователя с именем anna, подключающегося с любого компьютера, и устанавливает для этой учетной записи пароль annapassword. Команда

   CREATE USER 'anna'@'localhost' IDENTIFIED BY PASSWORD
   '*3C7F72EAE78BC95AAFBFD21F8741C24A0056C04B';

   создает учетную запись для пользователя anna, подключающегося с локального компьютера, и устанавливает в качестве пароля значение annalocpassword (поскольку функция PASSWORD('annalocpassword') возвращает значение *3C7F72EAE78BC95AAFBFD21F8741C24A0056C04B).
   Сразу после выполнения команды CREATE USER новый пользователь может подключаться к серверу MySQL.
   В следующем подразделе мы обсудим, как изменить пароль пользователя, а также как восстановить забытый пароль пользователя root.

   Установка пароля

   Для установки пароля предназначена команда

   SET PASSWORD [FOR <Идентификатор пользователя>]
   = PASSWORD('<Пароль>');

   Параметрами этой команды являются идентификатор учетной записи пользователя и новый пароль для этой записи. Если вы не укажете идентификатор пользователя, то измените свой пароль.
   Вместо функции PASSWORD(), зашифровывающей реальный пароль, можно сразу ввести зашифрованный пароль. Например, команды

   SET PASSWORD FOR 'anna'@'%' =
   PASSWORD('newannapassword');

   и

   SET PASSWORD FOR 'anna'@'%' =
   '*006B99DE1BDA1BE6E1FFF714E764A8FAB0E614DF';

   устанавливают пароль newannapassword для пользователя anna, подключающегося с любого компьютера. Эти команды никак не влияют на другие учетные записи, например пароль учетной записи с идентификатором 'anna'@'localhost' не изменится.
   Если вы забыли пароль пользователя root и не можете подключиться к серверу для выполнения команды SET PASSWORD, выполните более сложную последовательность действий.
   1. Остановите сервер MySQL. Если он был сконфигурирован как сервис Windows, это можно сделать с помощью панели управления (об этом говорилось в подразделе «Запуск и остановка сервера MySQL с панели управления»). Если сервер не был сконфигурирован как сервис Windows, нажмите комбинацию клавиш Ctrl+Alt+Del, в появившемся окне Диспетчер задач Windows перейдите на вкладку Процессы, затем щелкните на названии процесса mysqld-nt.exe и нажмите кнопку Завершить процесс.
   2. Создайте init-файл. Для этого запустите стандартную программу Windows Блокнот (Пуск → Все программы → Стандартные → Блокнот). В окне программы Блокнот введите следующие SQL-команды (рис. 5.1).
   Рис. 5.1. Init-файл

   UPDATE mysql.user SET Password=PASSWORD('<Новый пароль root>') WHERE
   User='root';
   FLUSH PRIVILEGES;

...
   Внимание!
   Важно, чтобы каждая из команд располагалась в одной строке текстового файла, как показано на рис. 5.1.
   Для сохранения init-файла нажмите комбинацию клавиш Ctrl+S. В стандартном окне Windows Сохранить как выберите папку, в которую нужно поместить файл (например, C:). Введите имя файла (например, mysql.init) и нажмите кнопку Сохранить.
   3. Откройте окно командной строки Windows. Для этого нажмите кнопку Пуск, в меню выберите пункт Выполнить, в появившемся окне Запуск программы в поле Открыть введите команду cmd и нажмите кнопку OK. На экране возникнет окно командной строки, в которой выполните следующую команду (рис. 5.2):

   mysqld-nt –defaults-file=<Путь к файлу my.ini>
   –init-file=<Путь к init-файлу>

   Например,

   mysqld-nt –defaults-file=”C:Program FilesMySQLMySQL
   Server 5.0my.ini” –init-file=C:mysql.init

   (конфигурационный файл my.ini располагается в каталоге, в котором установлена программа MySQL).
   Рис. 5.2. Запуск сервера MySQL с параметром – init-file

   4. Остановите сервер MySQL с помощью диспетчера задач, как описано в п. 1, а затем удалите init-файл.
   5. Запустите сервер MySQL в обычном режиме. Теперь вы можете использовать новый пароль пользователя root, который был указан в init-файле.
   Итак, вы научились работать с паролями пользователей. Теперь рассмотрим операцию удаления пользователя.
Чтение онлайн



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29 30 31

Навигация по сайту


Читательские рекомендации

Информация