Spec-Zone.ru › MySQL 9.2

2.9.2.1 Устранение неполадок при запуске сервера MySQL

Этот раздел предоставляет рекомендации по устранению неполадок при запуске сервера. Дополнительные рекомендации для систем Windows см. в разделе 2.3.4 «Устранение неполадок установки сервера MySQL для Microsoft Windows».

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

  • Проверьте журналы, чтобы выяснить причину, по которой сервер не запускается. Файлы журналов находятся в каталоге (обычно C:\Program Files\MySQL\MySQL Server 9.2\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 вы можете указать mysqld расположение базового каталога, в котором установлен 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-9.2-en/starting-server-troubleshooting.html

Spec-Zone.ru

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