П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3597 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6185 раз(а).

Учебник HTML.
Просмотров 3317 раз(а).

Руководство по PHP5.
Просмотров 5555 раз(а).

Хостинг через призму DNS.
Просмотров 4223 раз(а).

Подборка текстов стандартных документов.
Просмотров 55814 раз(а).

Учебник PHP - Самоучитель
Просмотров 3149 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 6318 раз(а).

Внешние атаки...
Просмотров 3898 раз(а).

Учебник PHP.
Просмотров 2861 раз(а).

SSI в примерах.
Просмотров 37494 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 4. Администрирование баз данных
Пред. След.

4.3. Управление учетными записями пользователей MySQL
4.3.7. Задание паролей

В большинстве случаев для задания пользователей и их паролей следует пользоваться командой GRANT, поэтому приведенная ниже информация предназначена для опытных пользователей. See Раздел 4.3.1, «Синтаксис команд GRANT и REVOKE».

В примерах, приведенных в предыдущих разделах, демонстрируется важный принцип, который заключается в следующем: при сохранении непустых паролей с использованием операторов INSERT или UPDATE для их шифрования должна применяться функция PASSWORD(). Это делается потому, что в таблице user пароли хранятся в зашифрованном виде, а не как простой текст. Предположим, что мы упустили это из виду и задали пароли следующим образом:

shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('%','jeffrey','biscuit');
mysql> FLUSH PRIVILEGES;

В результате выполнения этих команд в таблице user будет сохранено значение пароля biscuit в виде простого текста. Когда пользователь jeffrey попытается подсоединиться к серверу, используя этот пароль, клиент mysql зашифрует его при помощи функции PASSWORD(), сгенерирует вектор аутентификации, основанный на зашифрованном пароле и случайно выбранном числе, полученном от сервера, и направит результат на сервер. Сервер использует значение password из таблицы user (в данном случае, это незашифрованное значение biscuit), чтобы осуществить точно такие же вычисления, и сравнит результаты. Результаты не совпадут, и сервер не позволит установить соединение:

shell> mysql -u jeffrey -pbiscuit test
Access denied

Перед занесением в таблицу user пароли необходимо зашифровывать, поэтому оператор INSERT должен использоваться следующим образом:

mysql> INSERT INTO user (Host,User,Password)
-> VALUES('%','jeffrey',PASSWORD('biscuit'));

При использовании оператора SET PASSWORD также необходимо применять функцию PASSWORD():

mysql> SET PASSWORD FOR jeffrey"%" = PASSWORD('biscuit');

Если пароль задается при помощи оператора GRANT ... IDENTIFIED BY или команды mysqladmin password, нет необходимости использовать функцию PASSWORD(). Обе эти команды самостоятельно производят шифровку пароля, поэтому пароль следует указывать как biscuit, например, таким образом:

mysql> GRANT USAGE ON *.* TO jeffrey"%" IDENTIFIED BY 'biscuit';

или

shell> mysqladmin -u jeffrey password biscuit

Примечание: Функция PASSWORD() шифрует пароли отличным от Unix образом. Не следует полагать, что если ваши пароли для Unix и для MySQL совпадают, то функция PASSWORD() выдаст точно такой же результат шифрования, как и файл паролей Unix. See Раздел 4.3.2, «Имена пользователей MySQL и пароли».


Назад Начало Главы Начало Раздела Вперед

Пред. Глава След. Глава
Глава 3. Учебное пособие по MySQL Начало Книги Глава 5. Оптимизация в MySQL


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru