MySQL
Клиент mysql, базы и пользователи, бэкапы, диагностика.
Подключение
Подключиться к серверу
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