Справочник по MySQL / MariaDB
Основные команды для администрирования и работы с базами данных MySQL и MariaDB.
Установка и настройка
Шаг 1: Установка сервера
Для Debian/Ubuntu, MariaDB является заменой MySQL по умолчанию.
sudo apt update && sudo apt install -y mariadb-server
Шаг 2: Безопасная настройка
После установки запустите скрипт безопасной настройки. Он поможет установить пароль для root, удалить анонимных пользователей и тестовую базу данных.
sudo mysql_secure_installation
Шаг 3: Подключение к консоли
Для подключения к консоли MySQL/MariaDB используйте следующую команду.
sudo mysql -u root -p
Управление базами данных
Создание БД (`CREATE DATABASE`)
Команда для создания новой базы данных. Рекомендуется сразу указывать кодировку `utf8mb4` для полной поддержки Unicode.
CREATE DATABASE my_new_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Просмотр всех БД
SHOW DATABASES;
Удаление БД (`DROP DATABASE`)
Внимание! Команда необратима.
DROP DATABASE my_new_app;
Управление пользователями
Создание пользователя
Создает нового пользователя с паролем. `%` означает, что пользователь сможет подключаться с любого хоста. Для большей безопасности можно указать `localhost` или конкретный IP.
CREATE USER 'newuser'@'%' IDENTIFIED BY 'a_very_strong_password';
Предоставление прав
Дает пользователю все права на определенную базу данных.
GRANT ALL PRIVILEGES ON my_new_app.* TO 'newuser'@'%';
Применение изменений
После создания пользователя и выдачи прав необходимо обновить привилегии.
FLUSH PRIVILEGES;
Работа с данными (SQL)
Основные команды для взаимодействия с таблицами и данными внутри базы. Все команды выполняются в консоли MySQL.
Выбор базы данных и просмотр таблиц
Сначала выберите базу данных для работы:
USE my_new_app;
Посмотреть все таблицы в текущей базе:
SHOW TABLES;
Посмотреть структуру конкретной таблицы:
DESCRIBE users;
Поиск и изменение данных
Найти всех пользователей с именем 'Ivan':
SELECT * FROM users WHERE name = 'Ivan';
Изменить email пользователя с ID 123:
UPDATE users SET email = 'new.email@example.com' WHERE id = 123;
Сохранение результатов запроса в файл
Позволяет экспортировать результат выполнения запроса `SELECT` в текстовый файл на сервере.
Важно: По умолчанию из соображений безопасности MySQL может ограничивать каталоги для экспорта. Вам может потребоваться настроить переменную secure_file_priv в конфигурационном файле my.cnf.
SELECT id, name, email FROM users WHERE registration_date > '2023-01-01'
INTO OUTFILE '/var/lib/mysql-files/recent_users.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Проверка и ремонт таблиц
Проверка таблицы
Команда для проверки таблицы или таблиц на наличие ошибок.
CHECK TABLE my_table, another_table;
Ремонт таблицы
Пытается исправить поврежденную таблицу. В основном эффективно для старого движка MyISAM. Для InnoDB лучшей стратегией является восстановление из резервной копии.
REPAIR TABLE my_table;
Резервное копирование и восстановление
Эти команды выполняются из обычной командной строки Linux, а не из консоли MySQL.
Резервное копирование (Backup)
`mysqldump` создает текстовый файл с SQL-командами для воссоздания базы.
sudo mysqldump -u root -p my_database_name > backup.sql
Восстановление (Restore)
Для восстановления сначала нужно создать пустую базу данных, а затем импортировать в нее данные из бэкапа.
1. Создаем пустую базу в консоли MySQL:
CREATE DATABASE my_database_name;
2. Импортируем данные в командной строке Linux:
sudo mysql -u root -p my_database_name < backup.sql