====== Полезные команды ======

===== Создание пользователя =====
<code bash>CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'password';</code>

===== Задать права пользователю =====
<code bash>GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost';</code>

===== Посмотреть существующих пользователей и их привилегии =====

==== Список пользователей ====
<code bash>SELECT user, host FROM mysql.user;</code>

==== Список привилегий для каждого пользователя ====
<code bash>SHOW GRANTS FOR 'root'@'localhost';</code>

===== Смена пароля =====
<code bash>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('New_Password');</code>

==== Смена пароля пользователю root ====
<code bash>mysqladmin -u root password</code>

===== Сброс пароля для root =====

  - Для начала необходимо остановить сервис<code bash>systemctl stop mariadb</code>
  - Создаем каталог /var/run/mysqld и зададим для него нужные права<code bash>mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld</code>
  - Запускаем в безопасном режиме СУБД<code bash>mysqld_safe --skip-grant-tables &</code>
  - Запускаем оболочку sql — система не потребует пароль<code bash>>mysql -uroot</code>
  - Меняем пароль запросов sql в базе mysql<code bash>>use mysql;
>UPDATE user SET authentication_string=PASSWORD("new_password") WHERE User='root';
>FLUSH PRIVILEGES;
>quit</code>
  - Уничтожаем процесс, который запустили ранее<code bash>kill %1</code>
  - После, запускаем mysql в нормальном режиме<code bash>systemctl start mariadb</code>

===== Удаление пользователя =====
<code bash>REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'dbuser'@'localhost';
DROP USER 'dbuser'@'localhost';</code>

===== Посмотреть размер баз данных на сервере с сортировкой по размеру в мегабайтах =====
<code bash>SELECT table_schema "DB Name", ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "Size in MB" FROM information_schema.tables GROUP BY table_schema ORDER BY `Size in MB` DESC;</code>

===== Посмотреть размер конкретной базы данных =====
<code bash>SELECT table_schema `Database`, round(Sum(data_length + index_length) / 1024 / 1024, 1) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "имя базы";</code>

===== Посмотреть размер самых больших таблиц в базе данных =====
<code bash>SELECT table_name `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "имя базы" ORDER BY `Size in MB` DESC LIMIT 10;</code>

===== Удалить все таблицы в базе данных, не удаляя саму базу =====
<code bash>SELECT CONCAT ('DROP TABLE ',GROUP_CONCAT(TABLE_NAME),';') INTO @qery FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = "имя базы"; PREPARE drop_tables FROM @qery; EXECUTE drop_tables;</code>