Spec-Zone .ru
спецификации, руководства, описания, API
|
Необходимые учетные данные для клиентов, которые соединяются с сервером MySQL, могут включать пароль. Этот раздел описывает, как присвоить пароли для учетных записей MySQL. В MySQL 5.7 для клиентов также возможно аутентифицировать плагины использования. Для получения информации см. Раздел 6.3.7, "Сменная Аутентификация".
Присваивать пароль, когда Вы создаете новую учетную запись с CREATE USER
, включайте IDENTIFIED BY
пункт:
mysql>CREATE USER 'jeffrey'@'localhost'
->IDENTIFIED BY 'mypass';
Чтобы присвоить или изменить пароль для существующей учетной записи, один путь к проблеме a SET PASSWORD
оператор:
mysql>SET PASSWORD FOR
->'jeffrey'@'localhost' = PASSWORD('mypass');
MySQL хранит пароли в user
таблица в mysql
база
данных. Только пользователи такой как root
у этого есть доступ обновления к mysql
база данных может изменить пароль для других пользователей. Если Вы не
соединяетесь как анонимный пользователь, можно изменить свой собственный пароль, опуская FOR
пункт:
mysql> SET PASSWORD =
PASSWORD('mypass');
old_passwords
системное значение переменной определяет хеширующий метод, используемый PASSWORD()
. Если Вы определяете пароль, используя ту функцию и SET PASSWORD
отклоняет пароль, как не являющийся в корректном формате, может
быть необходимо установить old_passwords
изменить хеширующий метод. Для описаний разрешенных значений
см. Раздел 5.1.4, "Системные Переменные Сервера".
В MySQL 5.7, включая read_only
системная переменная предотвращает использование SET
PASSWORD
оператор любым пользователем, не имеющим SUPER
полномочие.
Можно также использовать a GRANT USAGE
оператор на глобальном уровне (ON *.*
)
присваивать пароль учетной записи, не влияя на полномочия текущего счета:
mysql>GRANT USAGE ON *.* TO 'jeffrey'@'localhost'
->IDENTIFIED BY 'mypass';
Чтобы присвоить пароль из командной строки, используйте mysqladmin команду:
shell> mysqladmin -u user_name
-h host_name
password "newpwd
"
Учетная запись, для которой это наборы команд пароль является тем с a user
строка
таблицы, которая соответствует user_name
в User
столбец и хост клиента, от которого Вы
соединяетесь в Host
столбец.
Во время аутентификации, когда клиент соединяется с сервером, MySQL обрабатывает пароль в user
таблица как зашифрованное значение хэш-функции (значение это PASSWORD()
возвратился бы для пароля). Присваивая пароль учетной записи,
важно сохранить зашифрованное значение, не незашифрованный пароль. Используйте следующие направляющие линии:
Когда Вы присваиваете использование пароля CREATE USER
, GRANT
с IDENTIFIED BY
пункт, или mysqladmin команда пароля, они шифруют пароль для Вас. Определите
литеральный незашифрованный пароль:
mysql>CREATE USER 'jeffrey'@'localhost'
->IDENTIFIED BY 'mypass';
Для CREATE
USER
или GRANT
, можно избежать отправлять незашифрованный пароль, если Вы знаете
значение хэш-функции это PASSWORD()
возвратился бы для пароля. Определите значение хэш-функции, которому предшествует ключевое слово PASSWORD
:
mysql>CREATE USER 'jeffrey'@'localhost'
->IDENTIFIED BY PASSWORD '*90E462C37378CED12064BB3388827D2BA3A9B689';
Когда Вы присваиваете учетную запись непустое использование пароля SET PASSWORD
, следует использовать PASSWORD()
функция, чтобы зашифровать пароль, иначе пароль сохранен как
простой текст. Предположите, что Вы присваиваете пароль как это:
mysql>SET PASSWORD FOR
->'jeffrey'@'localhost' = 'mypass';
Результат состоит в том что литеральное значение 'mypass'
сохранен как
пароль в user
таблица, не зашифрованное значение. Когда jeffrey
попытки соединиться с сервером, используя этот пароль,
значение шифруется и по сравнению со значением, сохраненным в user
таблица. Однако, хранимая сумма является литеральной строкой 'mypass'
,
так сбои сравнения и сервер отклоняет соединение с Access denied
ошибка.
PASSWORD()
шифрование отличается от шифрования пароля Unix. См. Раздел
6.3.1, "Имена пользователей и Пароли".
Предпочтительно присвоить использование паролей SET
PASSWORD
, GRANT
, или mysqladmin, но также возможно изменить user
представьте в виде таблицы непосредственно. В этом случае следует также использовать FLUSH PRIVILEGES
заставить сервер перечитывать таблицы предоставления. Иначе,
изменение остается незамеченным сервером, пока Вы не перезапускаете это.
Чтобы установить пароль для новой учетной записи, обеспечьте значение для Password
столбец:
mysql>INSERT INTO mysql.user (Host,User,Password)
->VALUES('localhost','jeffrey',PASSWORD('mypass'));
mysql>FLUSH PRIVILEGES;
Чтобы изменить пароль для существующей учетной записи, использовать UPDATE
установить Password
значение столбца:
mysql>UPDATE mysql.user SET Password = PASSWORD('bagel')
->WHERE Host = 'localhost' AND User = 'francis';
mysql>FLUSH PRIVILEGES;