2.9.2.1 Устранение неполадок при запуске сервера MySQL
В этом разделе приведены рекомендации по устранению неполадок при запуске сервера. Дополнительные рекомендации для систем Windows см. в разделе 2.3.4 «Устранение неполадок при установке сервера MySQL для Microsoft Windows».
Если у вас возникли проблемы с запуском сервера, выполните следующие действия:
-
Проверьте журналы, чтобы понять причину, по которой сервер не запускается. Файлы журналов находятся в каталоге (обычно
C:\Program Files\MySQL\MySQL Server 8.4\dataв Windows,/usr/local/mysql/dataдля дистрибутива двоичного кода Unix/Linux и/usr/local/varдля дистрибутива исходного кода Unix/Linux). Найдите в каталоге данных файлы с именами в форматеиhost_name.err, гдеhost_name.loghost_name— имя вашего серверного хоста. Затем просмотрите последние несколько строк этих файлов. Используйтеtailдля их отображения:$>
tail$>host_name.errtailhost_name.log -
Укажите все необходимые специальные параметры для используемых вами движков хранения. Вы можете создать файл
my.cnfи указать параметры запуска для движков, которые вы планируете использовать. Если вы собираетесь использовать движки хранения, поддерживающие транзакционные таблицы (InnoDB,NDB), убедитесь, что они настроены так, как вам нужно, перед запуском сервера. Если вы используете таблицыInnoDB, см. раздел 17.8 «Настройка InnoDB» для руководства и 17.14 «Параметры запуска InnoDB и системные переменные» для синтаксиса параметров.Хотя движки хранения используют значения по умолчанию для параметров, которые вы опускаете, Oracle рекомендует ознакомиться с доступными параметрами и указать явные значения для любых параметров, значения по умолчанию которых не подходят для вашей установки.
-
Убедитесь, что сервер знает, где найти каталог данных. Сервер mysqld использует этот каталог в качестве текущего. Именно там он ожидает найти базы данных и записать файлы журналов. Сервер также записывает файл pid (ID процесса) в каталоге данных.
Расположение каталога данных по умолчанию жёстко закодировано при компиляции сервера. Чтобы определить параметры пути по умолчанию, вызовите mysqld с параметрами
--verboseи--help. Если каталог данных расположен в другом месте вашей системы, укажите это расположение с помощью параметра--datadirдля mysqld или mysqld_safe в командной строке или файле параметров. В противном случае сервер не работает должным образом. В качестве альтернативы параметру--datadirвы можете указать расположение базового каталога, в котором установлен MySQL, с помощью параметра--basedir, и mysqld ищет каталогdataтам.Чтобы проверить эффект указания параметров пути, вызовите mysqld с этими параметрами, а затем параметры
--verboseи--help. Например, если вы измените расположение на каталог, где установлен mysqld, а затем выполните следующую команду, она покажет эффект запуска сервера с базовым каталогом/usr/local:$>
./mysqld --basedir=/usr/local --verbose --helpВы можете указать и другие параметры, такие как
--datadir, но--verboseи--helpдолжны быть последними параметрами.После определения нужных настроек пути запустите сервер без
--verboseи--help.Если mysqld в настоящее время запущен, вы можете узнать используемые параметры пути, выполнив эту команду:
$>
mysqladmin variablesИли:
$>
mysqladmin -hhost_namevariableshost_name— имя хоста сервера MySQL. -
Убедитесь, что сервер имеет доступ к каталогу данных. Права доступа и разрешения каталога данных и его содержимого должны разрешать серверу чтение и изменение.
Если при запуске mysqld возникает ошибка
Errcode 13(что означаетPermission denied), это означает, что права доступа к каталогу данных или его содержимому не позволяют серверу получить доступ. В этом случае измените разрешения для соответствующих файлов и каталогов, чтобы сервер имел право на их использование. Вы также можете запустить сервер какroot, но это создаёт проблемы с безопасностью и следует избегать.Перейдите в каталог данных и проверьте права владельца каталога данных и его содержимого, чтобы убедиться, что сервер имеет доступ. Например, если каталог данных —
/usr/local/mysql/var, используйте эту команду:$>
ls -la /usr/local/mysql/varЕсли каталог данных или его файлы или подкаталоги не принадлежат учётной записи, используемой для запуска сервера, измените их права владельца на эту учётную запись. Если учётная запись называется
mysql, используйте эти команды:$>
chown -R mysql /usr/local/mysql/var$>chgrp -R mysql /usr/local/mysql/varДаже при правильных правах владельца MySQL может не запуститься, если на вашей системе запущено другое программное обеспечение безопасности, которое управляет доступом приложений к различным частям файловой системы. В этом случае перенастройте это программное обеспечение, чтобы разрешить mysqld доступ к каталогам, которые он использует в ходе обычной работы.
-
Убедитесь, что сервер может получить доступ к используемым сетевым интерфейсам.
Если появляются следующие ошибки, это означает, что какая-то другая программа (возможно, другой сервер mysqld) использует TCP/IP-порт или файл Unix-соккета, который mysqld пытается использовать:
Can't start server: Bind on TCP/IP port: Address already in use Can't start server: Bind on unix socket...
Используйте ps, чтобы определить, работает ли другой сервер mysqld. Если да, остановите сервер перед повторным запуском mysqld. (Если другой сервер работает, и вам действительно нужно запустить несколько серверов, вы можете найти информацию об этом в разделе 7.8 «Запуск нескольких экземпляров MySQL на одном компьютере».)
Если ни один другой сервер не работает, выполните команду
telnet. (Номер порта MySQL по умолчанию — 3306.) Затем несколько раз нажмите Enter. Если вы не получите сообщение об ошибке, похожее наyour_host_nametcp_ip_port_numbertelnet: Unable to connect to remote host: Connection refused, это означает, что какая-то другая программа использует TCP/IP-порт, который пытается использовать mysqld. Найдите эту программу и отключите её или сообщите mysqld слушать другой порт с помощью параметра--port. В этом случае укажите тот же нестандартный номер порта для клиентских программ при подключении к серверу через TCP/IP.Ещё одной причиной недоступности порта может быть работа брандмауэра, блокирующего подключения к нему. В таком случае измените настройки брандмауэра, чтобы разрешить доступ к порту.
Если сервер запускается, но вы не можете к нему подключиться, убедитесь, что в
/etc/hostsесть запись, похожая на эту:127.0.0.1 localhost
Если вы не можете запустить mysqld, попробуйте создать файл трассировки для поиска проблемы, используя параметр
--debug. См. раздел 7.9.4 «Пакет DBUG».
© 2025 Oracle
Licensed under the GPLv2 License.