# MySQL Базы данных хранятся в /var/lib/mysql ``` sudo grep -R 'datadir' /etc/mysql/ ``` **Настройка сессии**
Уровень изолированностиЧерновое чтениеНеповторяющееся чтениеФантомное чтениеБлокировка чтения
READ UNCOMMITTEDДаДаДаНет
READ COMMITTEDНетДаДаНет
REPEATABLE READНетНетДаНет
SERIALIZABLEНетНетНетДа
Можно установить на уровне сессии ``` SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; ``` Взаимоблокировки: Innodb отказывает самой короткой транзакции цели в трех ключевых областях: задержка, доступность и ошибки **Performance Schema** Это отдельный engine Проверить факт наличия: ```sql SHOW ENGINES; +--------------------+---------+----------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------+--------------+------+------------+ | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | ``` включен или нет: ```sql SHOW VARIABLES LIKE 'performance_schema'; ``` **Переменные окружения** Просмотр ```sql SHOW VARIABLES LIKE 'performance_schema'; ``` Поддерживает % **Настройки** Настройка при запуске ``` shell> mysql --max_allowed_packet=16M ``` Настройка при работе ``` mysql>SET GLOBAL max_connections = 1000; - потеря при перезагрузке mysql>SET PERSIST max_connections = 1000; - сохранение после перезагрузки ``` Инструменты (setup\_instruments) пишут в потребителя (таблицы данных, ). Схемой sys представления и хранимые подпрограммы над performance\_schema. включение инструментов вызывает дополнительный код ``` statement/sql/select; wait/synch/mutex/innodb/autoinc_mutex ``` Крайний левый - тип, далее слева направо подсистемы от общей к частной. Дайджест — агрегирование запросов путем удаления из них вариаций Структура таблиц потребителей: - \*\_current — события, происходящие на сервере в данный момент; - \*\_history — последние 10 завершенных событий на поток; - \*\_history\_long — последние 10 000 завершенных событий на поток по всему миру Ограничения: - Инструментарий должен поддерживаться компонентом MySQL. - Она собирает данные только после включения конкретного инструмента и потребителя. - Трудно освободить память. Даже если позже отключите определенные инструменты или потребители, память не будет освобождена, пока вы не перезапустите сервер. **Настройка инструментов мониторинга** Список инструментов: [https://mariadb.com/kb/en/performance-schema-setup\_instruments-table/](https://mariadb.com/kb/en/performance-schema-setup_instruments-table/) Таблица setup\_instruments - включенные инструменты. Структура:
NAMEНазвание инструмента
ENABLEDВключен или нет
TIMEDПланировщик. Если disabled, работать не будет
**CRUD db, tables, users** ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword'; CREATE DATABASE IF NOT EXISTS my_timeweb; DROP DATABASE IF EXISTS my_timeweb; CREATE USER 'sub_user'@'10.0.%' IDENTIFIED BY 'password'; SELECT * FROM mysql.user; DROP USER 'user'@'localhost'; ``` Привилегии:
ALTERМенять структуру таблицы или БД
CREATEСоздавать новые БД и таблицы
DELETEУдалять строки в таблице
INSERTДобавлять строки в таблицу
SELECTЧитать данные из таблицы
UPDATEОбновлять данные в таблице
DROPУдалять БД
ALL PRIVILEGESвсе, кроме GRANT;
USAGE PRIVILEGESникаких привилегий;
FILEразрешает читать файлы на сервере;
INDEXсоздавать индексы для таблиц;
DROPудалять таблицы;
EVENTобработка событий;
TRIGGERсоздание триггеров.
Привилегия на действия
GRANTизменять права пользователей;
SUPERсуперпользователь;
PROCESSполучение информации о состоянии MySQL;
RELOADпозволяет перезагружать таблицы привилегий;
SHUTDOWNпозволяет отключать или перезапускать базу данных;
SHOW DATABASESпросмотр списка баз данных;
LOCK TABLESблокирование таблиц при использовании SELECT;
REFERENCESсоздание внешних ключей для связывания таблиц;
CREATE USERсоздание пользователей;
```mysql GRANT SELECT, INSERT ON my_timeweb.* TO 'user'@'localhost'; из-под root GRANT ALL PRIVILEGES ON my_timeweb.* TO 'user'@'localhost'; REVOKE SELECT, INSERT ON my_timeweb.* FROM 'user'@'localhost'; ``` применение изменений ``` flush privileges; ``` **статус, приложения** mysqladmin version mysqlshow mysql - список таблиц БД mysql mysql\_secure\_installation mysqladmin - административное mysqlcheck - проверка mysqldump - сохранение mysqlimport - импорт текстовых файлов в нужную таблицу mysqlpump - экспорт базы в sql файл mysqlslap - статус загрузки сервера \--print-defaults выводит конфиг по умолчанию