$ command-helper

MySQL

Клиент mysql, базы и пользователи, бэкапы, диагностика.

Потребуется вход через Google

Подключение

Подключиться к серверу
mysql -h <host> -P <port> -u <user> -p
Подключиться сразу к базе
mysql -h <host> -u <user> -p <database>
Выполнить запрос без интерактивного режима
mysql -h <host> -u <user> -p -e "SELECT NOW();"
Выполнить SQL-файл
mysql -h <host> -u <user> -p <database> < script.sql

Базы и таблицы

Список баз
SHOW DATABASES;
Выбрать базу
USE <database>;
Список таблиц
SHOW TABLES;
Структура таблицы
DESCRIBE <table>;
DDL таблицы
SHOW CREATE TABLE <table>\G
Создать базу в utf8mb4
CREATE DATABASE <database> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Размер баз в МБпродвинутая
SELECT table_schema AS db,
       ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS size_mb
FROM information_schema.tables
GROUP BY table_schema
ORDER BY size_mb DESC;

Пользователи и права

Создать пользователя
CREATE USER '<user>'@'%' IDENTIFIED BY 'password';
Выдать все права на базу
GRANT ALL PRIVILEGES ON <database>.* TO '<user>'@'%';
Показать права пользователя
SHOW GRANTS FOR '<user>'@'%';
Сменить пароль
ALTER USER '<user>'@'%' IDENTIFIED BY 'new_password';

Бэкап и восстановление

Дамп одной базы
mysqldump -h <host> -u <user> -p <database> > <database>.sql
Дамп без блокировок (InnoDB)продвинутая
mysqldump -h <host> -u <user> -p --single-transaction --quick --routines --triggers <database> | gzip > <database>.sql.gz

--single-transaction даёт консистентный снимок без LOCK TABLES.

Восстановить из gzip-дампа
gunzip < <database>.sql.gz | mysql -h <host> -u <user> -p <database>

Диагностика

Активные запросы
SHOW FULL PROCESSLIST;
Убить запрос
KILL <process_id>;
План выполнения запросапродвинутая
EXPLAIN ANALYZE SELECT * FROM <table> WHERE id = 1;
Статус InnoDB (блокировки, дедлоки)продвинутая
SHOW ENGINE INNODB STATUS\G
Статус репликациипродвинутая
SHOW REPLICA STATUS\G

В версиях до 8.0.22 — SHOW SLAVE STATUS\G