Повторное изучение MySQL (2): эта статья позволяет понять весь процесс запуска MySQL.

MySQL

Оригинальный автор, публичный аккаунт [программист чтение], прошу обратить внимание на паблик-аккаунт, просьба указывать источник перепечатываемой статьи.

Обычно, когда мы разрабатываем приложения, мы больше подключаемся к запущенному серверу MySQL в качестве клиента, поэтому у нас есть много информации о том, как запустить сервер MySQL, как установить параметры запуска и как запустить сервер MySQL после запуска. завершено, не так много понимания того, как изменить поведение MySQL и т. д.

На самом деле установка различных параметров запуска во время запуска или работы сервера MySQL имеет решающее влияние на поведение и производительность MySQL, поэтому в этой статье мы рассмотрим запуск и завершение работы, настройку сервера MySQL. Файлы и системные переменные для некоторых деталей.

Запуск и завершение работы MySQL в Unix-подобных операционных системах

Хотя MySQL поддерживает множество различных платформ и операционных систем, таких как Windows и Mac OS, в качестве сервера базы данных, MySQL по-прежнему работает на类Unix操作系统На, таких как Centos, Ubuntu.

В Unix-подобных операционных системах существует много способов запуска MySQL, мы можем либо запустить MySQL вручную, либо установить MySQL в качестве стандартной службы системы для автоматического запуска при запуске системы.

Настройка стартовой учетной записи

Прежде чем запускать MySQL, первое, что нужно рассмотреть, это то, какую учетную запись использовать для запуска MySQL.Если мы не настроим ее, мы обычно будем использовать учетную запись, с которой мы сейчас входим, в качестве начальной учетной записи MySQL.

Меры предосторожности при настройке учетной записи активации

Здесь мы говорим о том, чтобы установить учетную запись запуска самостоятельно.На самом деле, есть несколько методов установки, которые автоматически устанавливают учетную запись запуска для нас.На данный момент нам не нужно устанавливать ее самостоятельно.

Не используйте учетную запись root в качестве начальной учетной записи MySQL.

Root является всемогущим в Unix-подобных операционных системах, поэтому вообще не используйте root для запуска какого-либо сервисного ПО, иначе, если сервис будет взломан, хакер может легко получить root-права, а затем полностью контролировать наш сервер, это очень опасно.

Одна и та же учетная запись всегда должна использоваться для запуска MySQL.

Программное обеспечение сервера должно быть запущено с той же учетной записью.Если мы используем разные учетные записи при запуске служебного программного обеспечения, то некоторые файлы, созданные этим программным обеспечением, принадлежат разным учетным записям.В это время права доступа к файлам, управляемые программным обеспечением, станут беспорядочными, и путаница с разрешениями.

MySQL следует запускать под учетной записью с низким уровнем привилегий.

Не используйте учетную запись root для запуска MySQL, поэтому вам необходимо создать несколько учетных записей с низким уровнем привилегий в качестве учетных записей запуска, чтобы даже в случае взлома причиненный ущерб находился под ограниченным контролем.

Добавить учетную запись активации

Если вам нужно указать текущую учетную запись сервера MySQL самостоятельно, вы можете использовать следующее создание для ее создания.Например, мы создаем учетную запись с именем mysql ниже:

# 下面两条命令需要使用root来执行
useradd -g mysql mysql

Если вы использовали другие учетные записи для запуска MySQL ранее, вам также необходимо установить пользователя и группу пользователей каталога данных MySQL на учетную запись mysql, например:

# 下面两条命令需要使用root来执行
$ chown -R mysql /usr/local/mysql/data
$ chgrp -R  mysql /usr/local/mysql/data

Есть два способа установить учетную запись активации

Файл конфигурации указывает стартовую учетную запись.Например, мы можем добавить следующие параметры в файл /etc/my.cnf:

[mysqld]
user=mysql

Таким образом, MySQL будет использовать mysql в качестве начальной учетной записи при запуске.

О содержимом конфигурационных файлов MySQL более подробные пояснения будут позже.

Вы также можете напрямую ссылаться на стартовую учетную запись в элементе автозагрузки, например:

#以mysql作为启动用户
mysqld -u mysql

О содержании элементов автозагрузки MySQL более подробные пояснения будут позже.

запустить MySQL

Обычно существуют следующие способы запуска сервера MySQL в Linux, давайте рассмотрим их один за другим.

mysqld

Команда mysqld является основной программой MySQL. Запустив команду mysqld, вы можете запустить демон MySQL, то есть сервер MySQL. общий способ.

# 在MySQL安装目录的bin目录下执行
$ mysqld

mysqld_safe

mysqld_safeЯвляется ли сценарий запуска MySQL,mysqld_safeДобавлены некоторые функции безопасности, перезапуск сервера при возникновении ошибки и регистрация информации о времени выполнения в журнале ошибок, поэтому обычно это более рекомендуется.mysqld_safeдля запуска сервера MySQL.

# 查看mysqld_safe支持的选项
$ mysqld_safe --help

Следует отметить, что он не устанавливается на некоторых платформах.mysqld_safescript, это потому, что эти платформы поддерживают запуск и завершение работы mysql в системе, поэтомуmysqld_safeбольше не нужен.

mysql.server

mysql.server также является сценарием, используемым для управления сервером MySQL, и его базовым вызовом является сценарий mysqld_safe.

запустить MySQL

$ mysql.server start

выключение MySQL

$ mysql.server stop

иmysqld_safeАналогично, на некоторых платформах, поддерживающих запуск и завершение работы mysql, сценарий mysql.server не установлен.

mysqld_multi

mysqld_multiЭто сценарий, предоставленный MySQL для управления несколькими серверами MySQL, который может запускать или останавливать несколько серверов MySQL одновременно.mysqld_multieсценарий ищет в файле конфигурации параметр с именем [mysqldN], где N может быть любым положительным целым числом.

mysqld_multiЕго полное использование выглядит следующим образом:

# GNR表示我们上面提到的N
mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

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

[mysqld1]
socket     = /tmp/mysql.sock2
port       = 3306
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir    = /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user       = unix_user1

[mysqld2]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3307
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir    = /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user       = unix_user2

Используйте следующую команду для настройки всех серверов, определенных в файле:

mysqld_multi start

Вы также можете запустить сервер отдельно, например:

mysqld_multi start 1

иmysqld_safeАналогично, на некоторых платформах, поддерживающих запуск и завершение работы mysql, сценарий mysqld_multi не установлен.

выключение MySQL

Ранее мы продемонстрировали два способа выключения сервера MySQL.Конечно, мы также можем выключить сервер MySQL с помощью команды mysqladmin, например:

mysqladmin -p -u root shutdown

Запуск и завершение работы MySQL в Windows

Есть два способа запустить сервер MySQL в операционной системе Windows.Один способ — запустить его непосредственно из командной строки, как в Linux, а второй — зарегистрировать MySQL как службу Windows.Таким образом, вы можете использовать MySQL для запуска с виндой.И запускать,но и через интерфейс можно запустить.

Запуск и выключение из командной строки

mysqld

Как и в случае с операционной системой Linux, мы можем закрыть работающий сервер MySQL с помощью команды mysqladmin.

mysqladmin -p -u root shutdown

Запуск и завершение работы через службу Windows

В операционной системе Windows, в дополнение к приведенной выше самостоятельной команде для запуска, вы также можете управлять MySQL через службы Windows.

Зарегистрировать службу Windows

Используйте следующую команду для регистрации MySQL в качестве службы Windows:

mysqld --install

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

mysqld --install-manual

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

# service_name为自定义的服务名
mysqld --install service_name

Вы также можете указать загруженный файл конфигурации при регистрации службы Windows, например:

mysqld --install service_name --default-file=filename

запускать

С помощью приведенной выше команды мы зарегистрировали MySQL как службу Windows, поэтому мы можем запустить MySQL с помощью следующей команды:

net start mysql

закрытие

Если MySQL был зарегистрирован как служба Windows, вы также можете использовать следующую команду для завершения работы MySQL.

net stop mysql

удалить службу виндовс

Если вы хотите удалить службу Windows, вы можете использовать приведенную выше команду, чтобы остановить службу, а затем выполнить следующую команду:

sc delete mysql

Установить элементы автозагрузки

Когда мы продемонстрировали запуск сервера MySQL выше, не было параметра, за которым следует команда запуска, что означает, что MySQL будет использовать параметры по умолчанию в своей собственной программе.Если мы хотим изменить эти параметры, мы можем указать их один за другим. при использовании команды запуска.

Например, MySQL по умолчанию прослушивает порт 3306, мы можем изменить порт на 3307 при запуске, например:

$ mysqld -P3307

Используйте следующую команду для просмотра всех параметров mysqld:

$ mysqld --verbose --help

заmysqld_safe,mysql.server,mysqld_multi, вы также можете просмотреть параметры опций, такие как mysqld, например:

mysqld_safe --help

Параметры опций MySQL поддерживают как длинные, так и короткие параметры.Параметры длинных параметров длиннее, например --user, --posrt, называются длинными параметрами, а -P, -u называются короткими параметрами, например:

mysqld --user=mysql --port=3307

Файл конфигурации MySQL

Выше мы говорили об управлении поведением сервера MySQL через параметры запуска.Хотя этот метод прост и понятен, если вам нужно указать много параметров запуска, вам нужно вводить много параметров в командной строке каждый раз, когда вы запускаете MySQL очень неудобно.

Итак, в MySQL также поддерживается использованиефайл конфигурации (или файл опций)Чтобы сохранить элементы запуска, когда мы указываем соответствующие параметры в файле конфигурации, при запуске MySQL параметры в файле конфигурации будут использоваться в качестве элементов запуска, таких как файл /etc/my.cnf в нашем предыдущем примере:

[mysqld]
user=mysql

Программы MySQL, запущенные с опцией --no-defaults, не читают никакие файлы опций, кроме .mylogin.cnf.

$ mysqld --no-defaults

Если параметры, указанные в файле конфигурации, совпадают с параметрами, указанными в командной строке, параметры, указанные в командной строке, имеют приоритет.Например, мы ссылаемся на user=mysql в файле конфигурации, но начинаем с --user= mysql в параметрах командной строки, таких как:

mysqld --user=test

Таким образом, test используется в качестве начальной учетной записи MySQL.

Порядок загрузки файлов конфигурации

Файлы конфигурации MySQL обычно имеют суффикс conf, но в Windows также могут иметь суффикс ini.Давайте посмотрим на порядок загрузки файлов конфигурации.

Unix-подобные файлы конфигурации

Для Unix-подобных операционных систем файлы конфигурации загружаются в следующем порядке:

путь и имя файла Соответствующие инструкции
/etc/my.cnf глобально действительный
/etc/mysql/my.cnf глобально действительный
SYSCONFDIR/my.cnf глобально действительный
$MYSQL_HOME/my.cnf Параметры, специфичные для сервера (только для сервера)
defaults-extra-file Дополнительные пути к файлам конфигурации, указанные в командной строке
~/.my.cnf Специальные параметры пользователя, ~ представляет текущий домашний каталог пользователя.
~/.mylogin.cnf Параметры пути входа в систему для конкретного пользователя (только для клиента), ~ представляет текущий домашний каталог пользователя.

SYSCONFDIR представляет каталог, указанный параметром DSYSCONFDIR, когда исходный код MySQL установлен и скомпилирован с помощью CMake. Если он не указан, по умолчанию используется каталог etc исходного кода. $MYSQL_HOME — это переменная среды, которую мы можем указать сами. .

Файлы конфигурации, связанные с Windows

Для операционной системы Windows каждый файл конфигурации загружается в следующем порядке при запуске MySQL:

путь и имя файла объяснять
%WINDIR%\my.ini, %WINDIR%\my.cnf глобально действительный
C:\my.ini, C:\my.cnf глобально действительный
BASEDIR\my.ini, BASEDIR\my.cnf глобально действительный
defaults-extra-file Дополнительные пути к файлам конфигурации, указанные в командной строке
%APPDATA%\MySQL.mylogin.cnf Параметр пути входа (действителен для клиентских команд)

%WINDIR% обычно относится к каталогу C:\WINDOWS, конечно, мы также можем просмотреть его с помощью следующей команды:

C:\> echo %WINDIR%

Значение %APPDATA% — это каталог, используемый операционной системой Windows для хранения данных приложений, которые также можно просмотреть в командной строке:

C:\> echo %APPDATA%

BASEDIR — это основной каталог установки MySQL.Если мы устанавливаем MySQL 5.7, этот каталог обычно относится к C:\PROGRAMDIR\MySQL\MySQL 5.7 Server, а PROGRAMDIR представляет собой каталог Program Files.

--default-extra-file

Хотя MySQL загружает упомянутые выше файлы конфигурации по порядку при запуске, это также может быть--default-extra-fileПараметры определяют другие файлы конфигурации, такие как:

$ mysqld --default-extra-file=/home/test/config/my.cnf

mylogin.cnf

Файл конфигурации MySQL, как правило, представляет собой простой текстовый файл, который можно редактировать с помощью обычного редактора текстовых файлов, но файл mylogin.cnf является исключением, используется файл mylogin.cnf.mysql_config_editorЗашифрованный файл, сгенерированный программой, файл mylogin.cnf действителен только для клиентских команд (mysql, mysqladmin и т. д.), и файл может содержать только пользователя, хост, пароль, сокет и другие параметры, связанные с входом в систему клиента.

Как написать файл конфигурации MySQL

Формат конфигурации MySQL обычно таков, что в одной группе может быть несколько групп.opt_name=valueили одинopt_nameварианты следующим образом:

[group]
opt_name1=value1
opt_name2=value2
opt_name3
...
opt_nameN=valueN

[group]
opt_name1=value1
opt_name2=value2
opt_name3
...
opt_nameN=valueN

Используйте # или ;, чтобы прокомментировать строку параметров, например:

[mysql]
;user=mysql
#port=3306

Группы необходимо заключать в круглые скобки ([]), указывая группу опций, которая обычно используется с сервером, MySQLD,mysqld_safe, client, mysql, mysqladmin, mysqldump, соответствующие различным командам MySQL.

Тем не менее, сервер и клиент, группа параметров сервера представляет параметры команды сервера, поэтому mysqld,mysqld_safeКоманда сервера может считывать конфигурацию группы параметров [сервер], а клиент соответствует конфигурации команды клиента, поэтому клиентские команды, такие как mysql, mysqladmin, mysqldump, могут считывать группу параметров [клиент].

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

[mysqldump]
quick

системная переменная

Для запущенного сервера MySQL больше невозможно изменить поведение сервера MySQL с помощью элементов автозагрузки или файлов конфигурации.В настоящее время это можно сделать, установив системные переменные MySQL.

Просмотр системных переменных

После входа на сервер MySQL через клиент командной строки мы можем распечатать системные переменные MySQL с помощью следующей команды:

mysql> show variables

Поскольку команда прямого показа переменных выводит все системные переменные, мы можем добавитьlikeдля фильтрации системных переменных, таких как:

mysql> show variables like '%character_set_client%'
Установить системные переменные

Системные переменные MySQL можно разделить на: глобальные системные переменные (глобальные переменные) и системные переменные сеанса (сеансовые переменные) в зависимости от области действия.

Глобальная системная переменная (глобальная переменная): доступна всем клиентам, подключенным к серверу.

Системная переменная сеанса (переменная сеанса): действует только текущий подключенный сеанс.

пройти черезSETоператор может устанавливать системные переменные,SETс последующимGLOBALЧтобы установить глобальные системные переменные,SESSIONСинтаксис системных переменных сеанса следующий:

SET [GLOBAL|SESSION] var_name = var_value;

Также можно использовать следующий синтаксис:

SET [@@(GLOBAL|SESSION).]var_name = var_value;

Простой пример:

mysql> set global character_set_client=utf8;

Если мы не укажем глобальную или сеанс при настройке системных переменных, по умолчанию необходимо установить системные переменные сеанса, такие как:

mysql> set character_set_client=utf8;

Просмотр системных переменных с разными областями

mysql> show global variables like 'character_set_client';

резюме

Благодаря вышеприведенному пониманию мы знаем, что при запуске MySQL мы можем контролировать различные варианты поведения сервера MySQL с помощью различных параметров элементов запуска или файлов конфигурации, и даже если сервер MySQL был запущен, мы все равно можем использовать системные переменные. сервер MySQL.

Добро пожаловать, чтобы отсканировать код, чтобы следовать, учиться и прогрессировать вместе