mysql create user how create new user mysql
Цей посібник пояснює команду MySQL Create User з різними механізмами авторизації, управління паролями, параметрами обмеження ресурсів тощо:
Команда MySQL CREATE USER використовується для створення нових користувачів та надання детального доступу до баз даних / таблиць тощо.
Кілька людей використовують екземпляр сервера MySQL з різним рівнем доступу. Наприклад, деякі користувачі мають доступ для читання до певної бази даних, аналогічно, деякі можуть мати доступ для читання та запису до певної бази даних тощо.
Команда CREATE USER частіше використовується адміністраторами MySQL для створення користувачів для екземплярів сервера MySQL та надання різних дозволів за допомогою запиту GRANT.
Що ви дізнаєтесь:
- Моя команда SQL CREATE USER
- Висновок
Моя команда SQL CREATE USER
Команда CREATE USER використовується для створення або додавання нових облікових записів до екземплярів сервера MySQL.
Ця команда загальнодоступна / використовується адміністраторами MySQL для управління доступом до різних користувачів екземпляра сервера MySQL.
Під час створення користувача за допомогою команди CREATE USER ви можете вказати
- Аутентифікація, яку слід використовувати під час підключення до MySQL.
- Обмеження ресурсів
- Властивості управління паролями: термін дії пароля, налаштування повторного використання пароля.
- Блокування облікового запису: новостворені облікові записи буде заблоковано або розблоковано.
Облікові записи створюються в системній таблиці MySQL з іменем „Mysql.user“
Примітка: Щоб використовувати команду CREATE USER, користувач повинен мати привілей CREATE_USER або дозвіл на вставку для MySQL системна схема.
У найпростішій формі синтаксис команди CREATE USER такий:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Зверніть увагу на необов’язковість ЯКЩО НЕ ІСНУЄ . Це гарантує, що якщо користувач вже існує, результат запиту SQL просто видасть попередження і не матиме помилки. Ось, „Ім’я користувача“ відноситься до фактичного імені користувача, до якого користувач з'єднається та „Ім’я хоста“ відноситься до хосту, з якого користувач буде підключатися.
Будь ласка, запиши, якщо поле «ім’я хосту» залишається порожнім, тоді приймається значення хосту «%», що дозволить будь-якому хосту підключатися до вказаного імені користувача.
Створіть користувача з таким синтаксисом:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
За допомогою вищезазначеного твердження ми створили користувача з іменем користувача „userx” та паролем як „пароль”. Ім'я хосту - localhost, оскільки ми створюємо користувачів на нашому локальному екземплярі MySQL.
Спробуємо зробити запит у таблиці mysql.users, щоб побачити запис для створеного нами користувача.
SELECT * from mysql.user
Ви побачите результат, як показано нижче:
як написати зразок плану тестування
Перші 4 користувачі попередньо створюються під час самої інсталяції MySQL, а останній запис - це користувач, якого ми створили, тобто „userx”.
Важливо зазначити, що на даний момент ми щойно створили користувача, не надаючи йому ніяких прав щодо створення / оновлення / запиту бази даних тощо.
Спробуємо увійти в систему з цим користувачем за допомогою клієнта MySQL.
Ви можете використовувати термінал для підключення за допомогою команди нижче:
$ /usr/local/mysql/bin/mysql -u userx -p
Коли з’явиться запит на введення пароля, введіть пароль як „пароль”.
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 33 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
Тепер ми створимо нову базу даних за допомогою ключового слова CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Як ви можете бачити вище, згенеровано повідомлення про помилку, яке повідомляє, що користувач 'userx' не має доступу до створення БАЗИ ДАНИХ. Давайте подивимось інші параметри, які можна використовувати з командою CREATE USER.
СТВОРИТИ КОРИСТУВАЧА за допомогою плагіна Auth
‘Auth plugin’ визначає параметр автентифікації та зберігається у стовпці плагіна таблиці mysql.user. MySQL підтримує кілька плагінів аутентифікації.
Деякі підтримувані плагіни наведені нижче:
- Хешування власного пароля MySQL: Власне хешування паролів - це не що інше, як використання SHA1 для зберігання значень паролів у таблиці mysql.users. Цей механізм вважається менш безпечним, ніж хешування паролів SHA1.
- Хешування паролів SHA2 256: Це плагін автентифікації за замовчуванням, який використовується MySQL. тобто навіть якщо жодним плагіном автентифікації не вказано команду CREATE_USER, за замовчуванням цей плагін буде застосовано.
- Зовнішня автентифікація за допомогою LDAP: LDAP зазвичай використовується для зв’язку автентифікації MySQL з активним каталогом організації. Наприклад, автентифікація за допомогою Google SSO, OAuth або Microsoft Outlook LDAP. Це вимагає встановлення плагіна LDAP і на стороні MySQL. Для отримання більш докладної інформації ви можете звернутися тут.
>> Довідка тут для повного списку підтримуваних плагінів.
Спробуємо створити користувача з плагіном auth за замовчуванням та плагіном SHA2 auth та відповідними хешованими значеннями в таблиці mysql.users. По-перше, ми створимо користувача з автентифікацією за замовчуванням (SHA2), і давайте подивимося, що зберігається в mysql.user таблиця.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Давайте подивимось плагін автентифікації для цього користувача «за замовчуванням» у таблиці mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Тут, у рядку authentication_string, ви можете побачити його значення SHA-256 для рядка пароля - ‘P @ ssw0rd’.
Давайте зараз створимо користувача з плагіном аутентифікації. «Вхідний пароль MySQL» і подивіться, яка цінність плагіна, який зберігається.
CREATE USER IF NOT EXISTS 'user-sha1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd'
SELECT host,user,plugin,authentication_string from mysql.user where user='user-sha1'
СТВОРИТИ КОРИСТУВАЧА з роллю
MySQL також забезпечує призначення попередньо визначених ролей новим користувачам. Ці ролі вже мають налаштований доступ до деяких або всіх баз даних (які також можна налаштувати), наприклад, можна створити роль із назвою «розробник», якій можна призначити всі привілеї базі даних, і пізніше ми можемо використовувати ту саму роль для призначення нових користувачів.
Подивимось на прикладі:
- Створіть роль з іменем розробник
CREATE ROLE 'developer'
- Створити базу даних з назвою „тест”
CREATE DATABASE test
- Призначте привілеї для тестування бази даних на роль «розробника»
GRANT ALL ON test.* TO 'developer'
- Створіть користувача та призначте роль розробника
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Перевірка користувача може створити таблицю в тестовій базі даних
Спробуємо увійти в систему з користувачем «user-with-role», і ми спробуємо створити нову таблицю в тестовій базі даних.
$ /usr/local/mysql/bin/mysql -u user-with-role Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 44 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use test; Database changed mysql> create table test_table(name varchar(20)); Query OK, 0 rows affected (0.07 sec)
СТВОРИТИ КОРИСТУВАЧА за допомогою SSL / TLS
Створення користувача з параметрами SSL / TLS потребує встановлення сертифікатів SSL як для клієнта, так і для сервера. За замовчуванням SSL не налаштований для MySQL.
Слідуйте цим кроки налаштувати SSL для екземпляра сервера MySQL.
Для того, щоб створити користувача з увімкненим SSL, ви можете використовувати опцію ЗАПИТАТИ SSL під час створення користувача.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
Аналогічним чином, створення за допомогою X509 передбачало б, що клієнт / користувач підключатиметься, щоб мати дійсний сертифікат X509.
>> Довідка тут щоб зрозуміти більше про X509.
Щоб створити користувача зі сертифікатом X509, скористайтеся наведеним нижче запитом:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
СТВОРИТИ КОРИСТУВАЧА за допомогою параметрів управління паролями
Параметри пароля використовуються для встановлення політики щодо пароля під час створення користувача за допомогою команди CREATE USER.
# 1) Термін дії пароля при вході в систему. Термін дії пароля закінчується після першого використання та пропонує користувачам змінити пароль.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
# два) Термін дії пароля закінчується через встановлений інтервал. Термін дії пароля можна налаштувати з налаштованим інтервалом, наприклад, 90 днів.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Пароль заблоковується після налаштованих спроб повторної спроби. Багато разів бажано, щоб обліковий запис користувача заблокувався (на встановлений період) після неправильних спроб повторної спроби. У наведеному нижче запиті обліковий запис користувача буде заблоковано на 2 дні після 5 неправильних спроб.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Новий пароль не повинен бути таким, як налаштовані попередні паролі.
У наведеному нижче запиті новий пароль, встановлений користувачами, не повинен збігатися з попередніми 2 паролями.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
СТВОРИТИ КОРИСТУВАЧА з параметрами обмеження ресурсів
Обмеження ресурсів потрібні, особливо для виробничих екземплярів MySQL, щоб уникнути переповнення бази даних запитами / запитами від одного користувача, що може вплинути на продуктивність сервера MySQL.
Ми можемо встановити обмеження ресурсів, використовуючи будь-який з цих варіантів нижче:
# 1) MAX_QUERIES_PER_HOUR - Кількість запитів отримання, дозволених для даного користувача на годину.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Припустимо, якщо користувач намагається перевищити більше 5 запитів на годину, сервер MySQL видасть помилку, як показано нижче:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Кількість запитів на оновлення, дозволених для даного користувача на годину.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Скільки разів обліковий запис може підключатися до сервера за годину.
який є найкращим постачальником електронної пошти
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Кількість одночасних підключень до екземпляра сервера MySQL від даного користувача.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Зверніть увагу, що всі перераховані вище варіанти також можна поєднати під час створення користувача. Припустимо, якщо ми хочемо вказати MAX_QUERIES як 10, а MAX_UPDATES як 100, тоді ми можемо мати один запит CREATE_USER як:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL оновлення та видалення користувачів
MySQL надає 2 важливі команди - ALTER USER та DROP USER для зміни та видалення існуючих користувачів, відповідно. Давайте розберемося в обох із цих прикладів.
ЗМІНИТИ КОРИСТУВАЧА
MySQL ALTER USER використовується для оновлення / модифікації існуючих облікових записів користувачів MySQL. Це може бути використано,
- Оновити обмеження ресурсів
- Встановіть параметри пароля
- Блокування та розблокування облікових записів тощо.
Давайте подивимось приклад використання ALTER USER для розблокування заблокованого облікового запису.
Створіть користувача в заблокованому стані, а потім розблокуйте його за допомогою команди ALTER USER.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Тепер, при вході в систему з цим користувачем, ми отримаємо повідомлення про блокування облікового запису (оскільки користувач був створений у заблокованому стані).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Використовуйте запит нижче, щоб розблокувати користувача командою ALTER.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Увійдіть з користувачем за допомогою клієнта MySQL:
$ /usr/local/mysql/bin/mysql -u test -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 50 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
КРАПИТИ КОРИСТУВАЧА
Команда MySQL DROP USER видаляє одного або кількох існуючих користувачів та всі пов'язані з ними привілеї та гранти.
Зверніть увагу, що він не буде видаляти / видаляти будь-які дані, вставлені / створені або оновлені користувачем таблиці, які видаляються.
Якщо хтось намагається видалити неіснуючого користувача, команда DROP USER видасть помилку.
Давайте створимо користувача та видалимо його за допомогою команди DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Часті запитання
Q # 1) Що таке користувач у MySQL?
Відповідь: Користувач у MySQL - це обліковий запис / організація, яка може входити в екземпляр сервера MySQL та виконувати різні операції. Користувачеві може бути призначений рольовий доступ або детальний доступ до однієї або декількох баз даних та / або таблиць.
Q # 2) Як перевірити різних користувачів, підключених до MySQL?
Відповідь: Для того, щоб побачити активні сеанси користувачів на екземплярі сервера MySQL, ви можете запустити команду списку процесів, як показано нижче.
SHOW processlist;
Результат роботи цієї команди відображатиме різні атрибути сеансів активного користувача, підключених під час виконання команди.
Зразок вихідних даних нижче:
Запитання №3) Як переключити користувачів у MySQL?
Відповідь: MySQL працює над концепцією користувальницьких сесій. Увійшовши до даного користувача, ви можете запланувати припинення сеансу або відкрити сесію проти нового користувача в новому вікні або як нове підключення в клієнтах MySQL GUI, як робочий стіл.
Для входу з певним користувачем із клієнта mysql ви можете використовувати наступний синтаксис:
mysql -u {userName} -p
Після написання наведеної команди, після натискання клавіші Enter, вам буде запропоновано ввести пароль для користувача, зазначеного в полі {userName}. Після перевірки пароля ви потрапите в оболонку / командний рядок MySQL.
Щоб увійти з окремим користувачем, Ви можете завершити поточний сеанс, ввівши команду виходу та повторно увійти до іншого користувача.
mysql> exit
Також можна мати кілька підключень до екземплярів сервера MySQL для різних користувачів. Ви можете просто відкрити нову вкладку / вікно для командного рядка і використовувати ту саму команду для входу з іншим користувачем.
mysql -u {userName2} -p
Q # 4) Як зробити користувача MySQL лише для читання?
Відповідь: MySQL забезпечує вичерпний механізм надання детального доступу до баз даних або таблиць. Ви можете забезпечити різні типи доступу, такі як SELECT, UPDATE, INSERT тощо, до однієї або багатьох баз даних або таблиць.
Для того, щоб надати користувачеві доступ лише для читання, ви можете надати доступ SELECT до бази даних (використовуючи * для всіх таблиць або прямо вказавши ім'я таблиці відповідно до вимоги)
Давайте розберемося в цьому на прикладі нижче:
Ми створюємо користувача з іменем 'повторний доступ', який має пароль як 'Пароль'
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Тепер надайте доступ для читання до всіх таблиць бази даних з назвою „test”, використовуючи ключове слово GRANT у MySQL
grant select on test.* to 'readaccess'@'localhost'
Тепер, щоб перевірити доступ, ви можете увійти в систему з цим користувачем під назвою «повторний доступ» і спробувати здійснити запит у таблицях всередині бази даних «test».
Однак, якщо ви спробуєте вставити дані в будь-яку з таблиць всередині тестової бази даних, то ви отримаєте помилку у відмові у доступі, оскільки ми явно щойно надали цьому користувачеві доступ для читання.
Q # 5) Як бачити користувачів у MySQL?
Відповідь: MySQL має таблицю на системному рівні з назвою „mysql.user“, яка містить список усіх користувачів, створених для екземпляра сервера MySQL. Привілеї цієї таблиці, як правило, обмежені для користувачів root або адміністраторів або тих, хто керує автентифікацією та авторизацією для екземпляра сервера MySQL.
Q # 6) Як знайти ім'я та пароль користувача MySQL?
Відповідь: Зіставлення користувачів та паролів MySQL зберігається в системній таблиці ‘mysql.user’, яка є таблицею з обмеженим доступом. Пароль зберігається у зашифрованому форматі залежно від режиму шифрування, який був обраний під час створення користувачем.
Однак, якщо чийсь обліковий запис заблоковано, MySQL надає ще одну команду під назвою ALTER USER, яка може бути використана для розблокування даного облікового запису користувача.
Висновок
У цьому підручнику ми дізналися про команду MySQL CREATE USER, яка використовується для автентифікації та управління доступом загалом адміністраторами бази даних.
MySQL надає безліч потужних механізмів автентифікації та рольових призначень, які дозволяють створювати нових користувачів за допомогою попередньо визначених дозволів доступу. Ми також бачили приклади створення користувачів з різними механізмами авторизації, різними налаштуваннями паролів, параметрами терміну дії тощо.
найкращий безкоштовний DVD ripper для Windows 10
Рекомендована література
- Як завантажити MySQL для Windows та Mac
- Підручник із створення перегляду MySQL із прикладами коду
- Підручник зі створення таблиць MySQL із прикладами
- 31 Найпопулярніші запитання та відповіді на тестування баз даних
- Підручник з нормалізації бази даних: Приклади 1NF 2NF 3NF BCNF
- Повний посібник з тестування баз даних (чому, що та як перевіряти дані)
- MongoDB Створення резервної копії бази даних
- MongoDB Створити користувача та призначити ролі на прикладах