Spec-Zone.ru › MySQL 8.4

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.log, где host_name — имя вашего серверного хоста. Затем просмотрите последние несколько строк этих файлов. Используйте tail для их отображения:

    $> tail host_name.err
    $> tail host_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 -h host_name variables
    

    host_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 your_host_name tcp_ip_port_number. (Номер порта MySQL по умолчанию — 3306.) Затем несколько раз нажмите Enter. Если вы не получите сообщение об ошибке, похожее на telnet: 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/starting-server-troubleshooting.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API