Документація MySQL
Користувачів можна додавати двома різними способами – за допомогою команди GRANT або безпосередньо до таблиць призначення привілеїв MySQL. Краще використовувати команду GRANT - цей спосіб простіше і дає менше помилок. See section 4.3.1 Синтаксис команд GRANT та REVOKE.
Існує також велика кількість програм (таких як phpmyadmin), які служать для створення та адміністрування користувачів. @xref.
Наведені нижче приклади показують, як використовувати клієнт mysql для завдання нових користувачів. У прикладах передбачається, що привілеї встановлені відповідно до прийнятих за умовчанням значень, описаних у попередньому розділі. Це означає, що для внесення змін на тому ж комп'ютері, де запущено mysqld, необхідно приєднатися до сервера як користувач MySQL root, і у користувача root має бути привілей INSERT для бази даних mysql, а також адміністративний привілей RELOAD. Крім того, якщо було змінено пароль користувача root, його необхідно вказати тут для команди mysql.
Нових користувачів можна додавати за допомогою GRANT :
Ці команди GRANT створюють трьох нових користувачів:
monty Повноцінний суперкористувач - він може приєднуватися до сервера звідки завгодно, але повинен використовувати пароль some_pass . Зверніть увагу, що ми повинні застосувати оператори GRANT як для monty@localhost , так і для monty@"%" . Якщо не додати запис з localhost , запис анонімного користувача для localhost , який створюється за допомогою mysql_install_db , матиме перевагу при під'єднанні з локального комп'ютера, тому що в ній вказано більш певне значення для поля Host , і він розташований раніше в таблиці user . admin Користувач, який можеприєднуватись з localhost без пароля; йому призначено адміністративні привілеї RELOAD та PROCESS. Ці привілеї дозволяють користувачеві запускати команди mysqladmin reload, mysqladmin refres h і mysqladmin flush-*, а також mysqladmin processlist. Йому не призначено жодних привілеїв, що належать до баз даних (їх можна призначити пізніше, додатково застосувавши оператор GRANT). dummy Користувач, який може підключатися до сервера без пароля, але лише з локального комп'ютера. Всі глобальні привілеї встановлені в значення 'N' - тип привілею USAGE , який дозволяє створювати користувачів без привілеїв. Передбачається, що привілеї, що відносяться до баз даних, будуть призначені пізніше.
Можна безпосередньо додати таку саму інформацію про користувача за допомогою оператора INSERT , а потім дати серверу команду перезавантажити таблиці призначення привілеїв:
Залежно від версії MySQL у прикладі, наведеному вище, може вказуватись різна кількість значень 'Y' (у версіях до Version 3.22.11 було менше стовпців привілеїв). Для користувача admin використовується більш простий розширений синтаксис команди INSERT , який доступний починаючи з версії 3.22.11.
Зверніть увагу: щоб створити суперкористувача необхідно створити запис таблиці user з полями привілеїв, встановленими в значення 'Y'. Немає потреби задавати значення в записах таблиць db або host.
Стовпці привілеїв у таблиці user в останньому операторі INSERT (для користувача dummy ) були задані явно, тому даним стовпцям присвоєно прийняте за умовчанням значення 'N' . Так само діє команда GRANT USAGE.
У наведеному нижче прикладі додається користувач custom, який може приєднуватися з комп'ютерів localhost, server.domain таwhitehouse.gov. Він хоче отримувати доступ до бази даних банківськогообліку тільки з комп'ютера localhost, до бази даних expenses - тільки з whitehouse.gov, і до бази даних customer - з усіх трьох комп'ютерів, а також використовувати пароль stupid при підключенні з усіх трьох комп'ютерів.
Щоб встановити ці привілеї користувача за допомогою оператора GRANT , виконайте такі команди:
Привілеї для користувача custom ми призначаємо тому, що користувач хоче отримувати доступ до MySQL як з локального комп'ютера через сокети Unix, так і з віддаленого комп'ютера whitehouse.gov через протокол TCP/IP.
Щоб вказати привілеї користувача шляхом безпосереднього внесення змін до таблиці призначення привілеїв, виконайте такі команди (зверніть увагу на команду FLUSH PRIVILEGES наприкінці прикладу):
Перші три оператори INSERT додають у таблицю user записи, які дозволять користувачеві custom підключатися з різних комп'ютерів із зазначеним паролем, але з дають йому ніяких привілеїв (всі привілеї встановлено у прийняте за умовчанням значення 'N' ). Наступні три оператори INSERT додають записи в таблицю db , в якій призначаються привілеї для користувача custom по відношенню до баз даних bankaccount , expenses і customer, але тільки якщо доступ здійснюється з певних комп'ютерів. Як завжди, після внесення змін безпосередньо до таблиць призначення привілеїв серверу необхідно дати команду на перезавантаження цих таблиць (за допомогою FLUSH PRIVILEGES), щоб внесені зміни набули чинності.
Якщо необхідно надати певному користувачеві доступ з будь-якого комп'ютера до певного домену, можна скористатися оператором GRANT таким чином:
Щоб зробити те ж саме шляхом безпосередньоговнесення змін до таблиці призначення привілеїв, виконайте такі дії: