Приклад створення БД, та користувача

Вхід

Заходимо під root’ом в MySQL (MariaDB):

Якщо палоль є:

$ sudo mysql -uroot -p

[sudo] password for olex: Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 47 Server version: 10.1.47-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 ...

Якщо система налаштована на вхід без паролю:

$ sudo mysql

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.29-0ubuntu0.22.04.2 (Ubuntu) ...

Створення бази даних

mysql> CREATE DATABASE db_name;

mysql> CREATE DATABASE IF NOT EXISTS db_name;

https://dev.mysql.com/doc/refman/8.0/en/create-database.html

https://mariadb.com/kb/ru/create-database/

Переглянути існуючих користувачів та їх привілеї

Список користувачів:

mysql> SELECT user, host FROM mysql.user;

Список привілеїв (для кожного користувача виглядає окремо):

mysql> SHOW GRANTS FOR 'root'@'localhost';

Створення користувача та видача прав

Створити користувача без будь-яких прав:

mysql> CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'password';

Можемо отримати помилку про недостатній рівень захищеності пароля:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

У нових версіях за замовчуванням активовано політику на перевірку складності пароля. Подивимося поточні налаштування:

mysql> SHOW VARIABLES LIKE 'validate_password%';

+--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+

Можемо змінити деякі параметри:

mysql> SET GLOBAL validate_password.special_char_count = 0;

Query OK, 0 rows affected (0,02 sec)

Тепер можемо створити користувача з паролем без спеціальних символів.

Після цього права призначаються командою ‘GRANT’:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost';

До MySQL 8 можна було однією командою і створити користувача, і надати йому права:

GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Але, починаючи з версії 8, разробники заборонили її використання. Необхідно спочатку створити користувача (CREATE USER).

Опис команди:

Інші приклади

Надання особливих прав користувачу:

mysql> GRANT SELECT, UPDATE ON base1.* TO 'dbuser'@'localhost' IDENTIFIED BY 'password';

Користувач, що має право змінювати додавати, редагувати, видаляти дані у таблицях однієї бази, створювати тимчасові (для сесії) таблиці:

mysql> GRANT SELECT, UPDATE, INSERT, DELETE, LOCK TABLES, CREATE TEMPORARY TABLES, CREATE VIEW ON base1.* TO 'dbuser'@'localhost';

Разрешение на удаленное подключение и использование базы MySQL:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'192.168.0.55' IDENTIFIED BY 'password'

предоставит права пользователю dbuser, который будет подключаться с компьютера с IP-адресом 192.168.0.55.

Создание учетной записи MySQL с правами создания резервных копий:

mysql> GRANT SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER, LOCK TABLES ON *.* TO 'backup'@'localhost' IDENTIFIED BY 'backup';

Оновити всі надані привілеї

mysql> FLUSH PRIVILEGES;

Оновити всі привілеї з таблиць привілеїв у базі даних mysql. Якщо сервер запущено з опцією –skip-grant-table, це знову активує таблиці привілеїв.

https://dev.mysql.com/doc/refman/8.0/en/privilege-changes.html

https://mariadb.com/kb/en/flush/

Див також