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.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вы можете указать 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 -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.