Администрирование MySQL
Запуск и остановка сервера MySQL
В системе Windows
Запуск сервера MySQL:
1, Через средство управления «Службы»:Откройте диалоговое окно «Выполнить» (Win + R), введитеservices.msc, найдите службу «MySQL», щёлкните правой кнопкой мыши и выберите «Запуск».
2. Через командную строку:Откройте командную строку (от имени администратора), введите следующую команду:
net start mysql
Остановите сервер MySQL:
1, Через средство управления "Службы":Аналогично откройте диалоговое окно "Выполнить", введите services.msc, найдите службу "MySQL", щёлкните правой кнопкой мыши и выберите "Остановить".
2, Через командную строку:Откройте командную строку (от имени администратора), введите следующую команду:
net stop mysql
В системе Linux
1. Запустите службу MySQL:
Используйте командуsystemd(применимо к большинству современных дистрибутивов Linux, таких как Ubuntu, CentOS и т. д.):
sudo systemctl start mysql
Используйте командуservice(в некоторых более старых дистрибутивах):
sudo service mysql start
2. Остановите службу MySQL:
Использование systemd:
sudo systemctl stop mysql
Использование команды service:
sudo service mysql stop
3. Перезапустите службу MySQL:
Использование systemd:sudo systemctl restart mysql
Использование команды service:
sudo service mysql restart
4. Проверьте состояние службы MySQL:
Использование команды systemd:
sudo systemctl status mysql
Использование команды service:
sudo service mysql status
Система Mac OS
Запуск службы MySQL:
Использование командной строки:
sudo /usr/local/mysql/support-files/mysql.server start
Остановка службы MySQL:
Использование командной строки:
sudo /usr/local/mysql/support-files/mysql.server stop
Перезапуск службы MySQL:
Использование командной строки:
sudo /usr/local/mysql/support-files/mysql.server restart
Проверка состояния службы MySQL:
Использование командной строки:
sudo /usr/local/mysql/support-files/mysql.server status
В приведённых выше командах mysql может отличаться из-за разных путей установки или версий.
В Mac OS путь установки MySQL обычно /usr/local/mysql/, поэтому для запуска и остановки службы MySQL необходимо использовать скрипт mysql.server в этом пути.
Настройки пользователей MySQL
В MySQL к настройкам пользователей относятся такие операции, как создание пользователей, назначение привилегий и управление пользователями. Ниже приведены некоторые распространённые операции по настройке пользователей MySQL, включая создание пользователей, назначение привилегий, просмотр и удаление пользователей и т. д.
Создание пользователя
Чтобы создать нового пользователя, можно использовать следующую команду SQL:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username: имя пользователя.host: указывает, с каких хостов пользователь может подключаться. Например,localhostразрешает только локальные подключения,%разрешает подключения с любого хоста.password: пароль пользователя.
Пример
Предоставление привилегий
После создания пользователя необходимо предоставить ему права доступа. Используйте командуGRANT, чтобы предоставить привилегии:
GRANT privileges ON database_name.* TO 'username'@'host';
privileges: требуемые привилегии, напримерALL PRIVILEGES、SELECT、INSERT、UPDATE、DELETEи т. д.database_name.*: указывает на предоставление привилегий на базу данных или таблицу.database_name.*означает предоставление привилегий на все таблицы во всей базе данных,database_name.table_nameозначает предоставление привилегий на указанную таблицу.TO 'username'@'host': указывает пользователя и хост, которым предоставляются привилегии.
Пример
Сброс привилегий
После предоставления или отзыва привилегий необходимо сбросить привилегии, чтобы изменения вступили в силу:
FLUSH PRIVILEGES;
Просмотр привилегий пользователя
Чтобы просмотреть привилегии конкретного пользователя, можно использовать следующую команду:
SHOW GRANTS FOR 'username'@'host';
Пример
Отзыв привилегий
Чтобы отозвать привилегии пользователя, используйте команду REVOKE:
REVOKE privileges ON database_name.* FROM 'username'@'host';
Пример
Удалить пользователя
Чтобы удалить пользователя, можно использовать следующую команду:
DROP USER 'username'@'host';
Пример
Изменить пароль пользователя
Чтобы изменить пароль пользователя, можно использовать команду ALTER USER:
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
Пример
Изменить хост пользователя
Чтобы изменить хост пользователя (т. е. с каких хостов разрешено подключаться), можно сначала удалить пользователя, а затем заново создать пользователя.
Пример
DROP USER 'john'@'localhost';
-- Заново создать пользователя и указать новый хост
CREATE USER 'john'@'%' IDENTIFIED BY 'password';
Укажите привилегии при создании пользователя
При создании пользователя вы также можете одновременно предоставить привилегии (MySQL 8.0.16 и выше):
Пример
GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';
Конфигурация файла /etc/my.cnf
Файл /etc/my.cnf — это конфигурационный файл MySQL, используемый для настройки различных параметров и опций сервера MySQL.
В целом вам не нужно изменять этот конфигурационный файл. Конфигурация этого файла по умолчанию выглядит следующим образом:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock [mysql.server] user=mysql basedir=/var/lib [safe_mysqld] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
В конфигурационном файле можно указать каталог для хранения различных файлов журнала ошибок. Обычно вам не нужно изменять эти настройки.
Файл /etc/my.cnf может отличаться в разных системах и версиях MySQL, но обычно включает следующие разделы:
1. Основные настройки
basedir: Базовый каталог установки сервера MySQL.datadir: Расположение, где хранятся файлы данных MySQL.socket: Путь к файлу Unix-сокета сервера MySQL.pid-file: Путь к файлу, в котором хранится идентификатор процесса текущего работающего сервера MySQL.port: Номер порта, который прослушивает сервер MySQL, по умолчанию 3306.
2. Параметры сервера
bind-address: Указывает IP-адрес, который прослушивает сервер MySQL; может быть IP-адресом или именем хоста.server-id: В конфигурации репликации задайте уникальный идентификатор для каждого сервера MySQL.default-storage-engine: Механизм хранения по умолчанию, например InnoDB или MyISAM.max_connections: Максимальное количество соединений, которое сервер может поддерживать одновременно.thread_cache_size: Размер кэша потоков, используемый для повышения скорости запуска новых соединений.query_cache_size: Размер кэша запросов, используемый для повышения эффективности одинаковых запросов.default-character-set: Набор символов по умолчанию.collation-server: Сопоставление по умолчанию для сервера.
3. Настройка производительности
innodb_buffer_pool_size: Размер буферного пула механизма хранения InnoDB; это один из наиболее важных параметров настройки производительности InnoDB.key_buffer_size: Размер ключевого буфера механизма хранения MyISAM.table_open_cache: Количество кэшей таблиц, которые можно открыть одновременно.thread_concurrency: Количество потоков, которым разрешено выполняться одновременно.
4. Настройки безопасности
skip-networking: Запрещает серверу MySQL прослушивать сетевые подключения, разрешая только локальные подключения.skip-grant-tables: Запускает сервер MySQL без запроса пароля, обычно используется для восстановления забытого пароля root, но это создаёт угрозу безопасности.auth_native_password=1: Включает встроенную аутентификацию по паролю для MySQL 5.7 и выше.
5. Настройки журналов
log_error: Путь к файлу журнала ошибок.general_log: Записывает в журнал все клиентские подключения и запросы.slow_query_log: Записывает медленные запросы, время выполнения которых превышает определённый порог.log_queries_not_using_indexes: Записывает запросы, которые не используют индексы.
6. Настройки репликации
master_hostиmaster_user: Адрес главного сервера и пользователя репликации.master_password: Пароль пользователя репликации.master_log_fileиmaster_log_pos: Файл журнала и позиция, используемые для репликации.
Команды для управления MySQL
Ниже приведены часто используемые команды при работе с базой данных MySQL.
USE Имя базы данных :
Выберите базу данных MySQL, с которой нужно работать. После использования этой команды все команды MySQL будут применяться только к этой базе данных.mysql> use EXAMPLE; Database changed
SHOW DATABASES:
Выводит список баз данных в системе управления базами данных MySQL.mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | EXAMPLE | | cdcol | | mysql | | onethink | | performance_schema | | phpmyadmin | | test | | wecenter | | wordpress | +--------------------+ 10 rows in set (0.02 sec)
SHOW TABLES:
Отображает все таблицы в указанной базе данных. Перед использованием этой команды необходимо с помощью команды use выбрать базу данных, с которой будет выполняться работа.mysql> use EXAMPLE; Database changed mysql> SHOW TABLES; +------------------+ | Tables_in_example | +------------------+ | employee_tbl | | example_tbl | | tcount_tbl | +------------------+ 3 rows in set (0.00 sec)
SHOW COLUMNS FROM Таблица данных:
Отображает атрибуты, типы атрибутов, информацию о первичном ключе, сведения о том, является ли значение NULL, значения по умолчанию и другую информацию о таблице данных.mysql> SHOW COLUMNS FROM example_tbl; +-----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+-------+ | example_id | int(11) | NO | PRI | NULL | | | example_title | varchar(255) | YES | | NULL | | | example_author | varchar(255) | YES | | NULL | | | submission_date | date | YES | | NULL | | +-----------------+--------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)
SHOW INDEX FROM Таблица данных:
Отображает подробную информацию об индексах таблицы данных, включая PRIMARY KEY.mysql> SHOW INDEX FROM example_tbl; +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | example_tbl | 0 | PRIMARY | 1 | example_id | A | 2 | NULL | NULL | | BTREE | | | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 1 row in set (0.00 sec)
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] \G:
Эта команда выведет информацию о производительности и статистике системы управления базами данных MySQL.mysql> SHOW TABLE STATUS FROM EXAMPLE; # 显示数据库 EXAMPLE 中所有表的信息 mysql> SHOW TABLE STATUS from EXAMPLE LIKE 'example%'; # 表名以example开头的表的信息 mysql> SHOW TABLE STATUS from EXAMPLE LIKE 'example%'\G; # 加上 \G,查询结果按列打印
Демонстрация GIF:
