Администрирование 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: пароль пользователя.

Пример

CREATE USER 'john'@'localhost' IDENTIFIED BY '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': указывает пользователя и хост, которым предоставляются привилегии.

Пример

GRANT ALL PRIVILEGES ON test_db.* TO 'john'@'localhost';

Сброс привилегий

После предоставления или отзыва привилегий необходимо сбросить привилегии, чтобы изменения вступили в силу:

FLUSH PRIVILEGES;

Просмотр привилегий пользователя

Чтобы просмотреть привилегии конкретного пользователя, можно использовать следующую команду:

SHOW GRANTS FOR 'username'@'host';

Пример

SHOW GRANTS FOR 'john'@'localhost';

Отзыв привилегий

Чтобы отозвать привилегии пользователя, используйте команду REVOKE:

REVOKE privileges ON database_name.* FROM 'username'@'host';

Пример

REVOKE ALL PRIVILEGES ON test_db.* FROM 'john'@'localhost';

Удалить пользователя

Чтобы удалить пользователя, можно использовать следующую команду:

DROP USER 'username'@'host';

Пример

DROP USER 'john'@'localhost';

Изменить пароль пользователя

Чтобы изменить пароль пользователя, можно использовать команду ALTER USER:

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

Пример

ALTER USER 'john'@'localhost' IDENTIFIED BY 'newpassword456';

Изменить хост пользователя

Чтобы изменить хост пользователя (т. е. с каких хостов разрешено подключаться), можно сначала удалить пользователя, а затем заново создать пользователя.

Пример

-- Удалить старого пользователя
DROP USER 'john'@'localhost';

-- Заново создать пользователя и указать новый хост
CREATE USER 'john'@'%' IDENTIFIED BY 'password';

Укажите привилегии при создании пользователя

При создании пользователя вы также можете одновременно предоставить привилегии (MySQL 8.0.16 и выше):

Пример

CREATE USER 'john'@'localhost' IDENTIFIED BY 'password123' WITH GRANT OPTION;
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:

Другие расширения