Приклад створення БД, та користувача
Стисло
Створення:
Видалення:
Створити користувача adm для бази testdb з паролем "admPass" і максимальними привілеями для всіх таблиць цієї бази:
Створити користувача usr для бази testdb з паролем "usrPass" і мінімальними привілеями для всіх таблиць цієї бази:
Цей користувач матиме право додавати, змінювати, видаляти дані у таблицях однієї бази, блокувати їх, створювати тимчасові (для сесії) таблиці:
Вхід
Заходимо під root'ом в MySQL (MariaDB):
Якщо палоль є:
Якщо система налаштована на вхід без паролю:
Створення бази даних
https://dev.mysql.com/doc/refman/8.0/en/create-database.html
https://mariadb.com/kb/ru/create-database/
Переглянути існуючих користувачів та їх привілеї
Список користувачів:
Список привілеїв (для кожного користувача виглядає окремо):
де
'root'@'localhost'
— обліковий запис, на який дивимося привілеї. Якщо упустити FOR, команда видасть результат користувача, під яким виконано підключення до СУБД.
Створення користувача та видача прав
Створити користувача без будь-яких прав:
Можемо отримати помилку про недостатній рівень захищеності пароля:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
У нових версіях за замовчуванням активовано політику на перевірку складності пароля. Подивимося поточні налаштування:
validate_password_check_user_name – пароль не повинен збігатися з ім'ям користувача.
validate_password_dictionary_file - використовувати спеціальний файл із словником заборонених паролів.
validate_password_length – мінімальна довжина пароля.
validate_password_mixed_case_count - скільки, як мінімум, має бути символів у малій та великій розкладках.
validate_password_number_count - яку мінімальну кількість цифр використовувати у паролі.
validate_password_policy – дозволяє задати певний набір правил. Доступні значення LOW (або 0), MEDIUM (1), STRONG (2).
validate_password_special_char_count - мінімальна кількість спеціальних символів (наприклад, # або !).
Можемо змінити деякі параметри:
Тепер можемо створити користувача з паролем без спеціальних символів.
Після цього права призначаються командою 'GRANT':
До MySQL 8 можна було однією командою і створити користувача, і надати йому права:
GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Але, починаючи з версії 8, разробники заборонили її використання. Необхідно спочатку створити користувача (CREATE USER).
Опис команди:
ALL PRIVILEGES: надає повні права на використання даних.
*.*
: права надаються на всі бази та всі таблиці.dbuser: ім'я облікового запису.
localhost: доступ до облікового запису буде надано лише з локального комп'ютера.
password: пароль, який буде заданий користувачеві.
WITH GRANT OPTION: будуть надані додаткові права на зміну структури баз та таблиць.
Інші приклади
Надання особливих прав користувачу:
права на вибірку та оновлення даних у всіх таблицях бази
base1
для користувачаdbuser
список всіх можливих прав: all privileges, alter, create, create temporary tables, delete, drop, execute, file, index, insert, lock tables, process, references, reload, replication client, replication slave, select, show databases, shutdown, super, update, usage. Докладніше
Користувач, що має право змінювати додавати, редагувати, видаляти дані у таблицях однієї бази, створювати тимчасові (для сесії) таблиці:
Разрешение на удаленное подключение и использование базы MySQL:
предоставит права пользователю dbuser
, который будет подключаться с компьютера с IP-адресом 192.168.0.55
.
Создание учетной записи MySQL с правами создания резервных копий:
Оновити всі надані привілеї
Оновити всі привілеї з таблиць привілеїв у базі даних mysql. Якщо сервер запущено з опцією --skip-grant-table, це знову активує таблиці привілеїв.
https://dev.mysql.com/doc/refman/8.0/en/privilege-changes.html
https://mariadb.com/kb/en/flush/
Див також
[Права для пользователей]({{ site.baseurl}}/mysql/privileges)
Last updated