CREATE USER

 

Оператор create user дозволяє створити новий обліковий запис і має наступний синтаксис:

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']

Оператор створює обліковий запис user з необов'язковим паролем password. У прикладі представлений запит, створює користувача softtime.

Зауваження:

  • Оператор CREATE USER з'явився в СУБД MySQL, починаючи з версії 5.0.2.

Приклад:

CREATE USER softtime;

Якщо пароль не вказується, за замовчуванням в його якості виступає порожній рядок. Після того як новий обліковий запис створено, в будь-якому клієнті можна авторизуватися з під користувача softtime.

Для того щоб задати пароль, слід використовувати ключове слово IDENTIFIED BY, зa яким в одиночних лапках слідує пароль.

Приклад:

CREATE USER softtime IDENTIFIED BY '1234567';

Зауваження:

  • На даний момент оператор CREATE USER підтримує імена хостів до 60 символів. Ім'я користувача не може бути довшим 16 символів.

Пароль, заданий у прикладі для облікового запису softtime, буде зберігатися у вигляді звичайного тексту. Розумніше зберігати пароль у вигляді хеш-коду, отриманого в результаті незворотного шифрування. При авторизації пароль, що вводиться користувачем, також піддається незворотному шифруванню, після чого порівнянні піддаються хеш-коди. При такій системі авторизації зловмисник, який отримав в руки хеш-коди, змушений буде витратити час на розшифровку паролів користувача шляхом перебору. Якщо паролі обрані правильно, тобто не є осмисленою фразою, а представляють набір букв і цифр, час, який може знадобитися на їх розшифровку, зробить їх неактуальними. Для того щоб скористатися таким механізмом авторизації, необхідно помістити між ключовим словом IDENTIFIED BY і паролем ключове слово PASSWORD, яке повідомляє, що пароль перед збереженням слідує пропустити через функцію PASSWORD ().

Зауваження:

  • При незворотному шифруванні можна використовувати тільки функцію PASSWORD (), використання інших функцій не передбачено.

Приклад:

CREATE USER wet IDENTIFIED BY PASSWORD '123456';

При спробі створення облікового запису з вже існуючим ім'ям СУБД MySQL повертає помилку.

Проте створені за допомогою оператора CREATE USER облікові записи не мають жодних привілеїв - з використанням такого облікового запису неможливо переглядати таблиці та здійснювати запити. Для наділення облікового запису привілеями необхідно скористатися оператором GRANT.

Один оператор CREATE USER дозволяє створити відразу кілька записів. Для цього необхідно перерахувати визначення облікових записів через кому, як це продемонстровано в прикладі, де створюються відразу три облікових записи.

Приклад:

CREATE USER

wet IDENTIFIED BY PASSWORD ’123456’

ret IDENTIFIED BY PASSWORD ’1654321’,

tor IDENTIFIED BY PASSWORD ’678451’;

За замовчанням, якщо не вказується хост, створюється мережевий обліковий запис, тобто доступ дозволяється з будь-якого хоста мережі. Для того щоб створити обліковий запис, що дозволяє звертатися до сервера MySQL лише з певного хоста, наприклад тільки з локального хоста (localhost), слід явно вказати це в операторі create USER (приклад).

Приклад:

CREATE USER

'wet'@'localhost' IDENTIFIED BY PASSWORD '123456',

'ret'@'localhost' IDENTIFIED BY PASSWORD '654321',

'tor'@'localhost' IDENTIFIED BY PASSWORD '678451';