Оригинальный автор, публичный аккаунт [программист чтение], прошу обратить внимание на паблик-аккаунт, просьба указывать источник перепечатываемой статьи.
Обычно, когда мы разрабатываем приложения, мы больше подключаемся к запущенному серверу 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_safe
script, это потому, что эти платформы поддерживают запуск и завершение работы 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.
Добро пожаловать, чтобы отсканировать код, чтобы следовать, учиться и прогрессировать вместе