Документация MySQL
, поэтому приведенная ниже информация
предназначена для опытных пользователей. See section
.
В примерах, приведенных в предыдущих разделах, демонстрируется важный
принцип, который заключается в следующем: при сохранении непустых паролей
с использованием операторов
. Это делается потому, что в таблице
пароли хранятся в зашифрованном виде, а не как простой текст. Предположим,
что мы упустили это из виду и задали пароли следующим образом:
shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('%','jeffrey','biscuit');
mysql> FLUSH PRIVILEGES;
в виде простого текста. Когда пользователь
попытается подсоединиться к серверу, используя этот пароль, клиент
, сгенерирует вектор
аутентификации, основанный на зашифрованном пароле и случайно выбранном
числе, полученном от сервера, и направит результат на сервер. Сервер
использует значение
(в данном случае, это
незашифрованное значение
), чтобы осуществить точно такие же
вычисления, и сравнит результаты. Результаты не совпадут, и сервер не
позволит установить соединение:
пароли необходимо зашифровывать, поэтому
оператор
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('%','jeffrey',PASSWORD('biscuit'));
GRANT ... IDENTIFIED BY
, нет необходимости использовать функцию
. Обе эти команды самостоятельно производят шифровку пароля,
поэтому пароль следует указывать как
, например, таким образом:
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
шифрует пароли отличным от Unix образом. Не
следует полагать, что если ваши пароли для Unix и для MySQL совпадают, то
функция
выдаст точно такой же результат шифрования, как и файл
паролей Unix. See section
.
Рубрики: Без рубрики |

