Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел обеспечивает предложения поиска и устранения неисправностей для проблем, начинающих сервер на Unix. Если Вы используете Windows, см. Раздел 2.3.6, "Диагностируя MySQL Server Installation Microsoft Windows".
Если у Вас есть проблемы, запуская сервер, вот некоторые вещи попробовать:
Проверьте журнал
ошибок, чтобы видеть, почему сервер не запускается. Файлы журнала располагаются в каталоге
данных (обычно C:\Program Files\MySQL\MySQL Server 5.7\data
на
Windows, /usr/local/mysql/data
для двоичного распределения Unix, и /usr/local/var
для исходного распределения Unix). Смотрите в каталоге
данных для файлов с именами формы
и host_name
.err
, где host_name
.loghost_name
имя Вашего узла сервера. Затем исследуйте
последние немного строк этих файлов. На Unix использовать tail
вывести на
экран их:
shell>tail
shell>host_name
.errtail
host_name
.log
Определите любые специальные опции, необходимые механизмам хранения, которые Вы
используете. Можно создать a my.cnf
файл и определяет опции запуска для
механизмов, которые Вы планируете использовать. Если Вы собираетесь использовать механизмы хранения,
которые поддерживают транзакционные таблицы (InnoDB
, NDB
InnoDB
таблицы,
см. Раздел 14.2.1.2, "Конфигурируя InnoDB
"
для направляющих линий и Раздела
14.2.6,"InnoDB
Опции запуска и Системные Переменные" для
синтаксиса опции.
Хотя механизмы хранения используют значения по умолчанию для опций, которые Вы опускаете, Oracle рекомендует, чтобы Вы рассмотрели доступные параметры и определили явные значения для любых опций, значения по умолчанию которых не являются подходящими для Вашей установки.
Удостоверьтесь, что сервер знает, где найти каталог данных. mysqld сервер использует этот каталог в качестве своего текущего каталога. Это - то, где это ожидает находить базы данных и где это ожидает писать файлы журнала. Сервер также пишет изодромное с предварением (ID процесса) файл в каталоге данных.
Расположение каталога данных значения по умолчанию является hardcoded, когда сервер компилируется.
Чтобы определить, каковы настройки пути значения по умолчанию, вызовите mysqld с --verbose
и --help
опции. Если каталог данных располагается где-то в другом
месте на Вашей системе, определите то расположение с --datadir
опция к mysqld или mysqld_safe, на командной строке или в файле
опции. Иначе, сервер не будет работать должным образом. Как альтернатива --datadir
опция, можно определить mysqld расположение основного каталога, в
соответствии с которым MySQL устанавливается с --basedir
, и mysqld ищет data
каталог там.
Чтобы проверить эффект определения опций пути, вызовите mysqld с теми опциями, сопровождаемыми --verbose
и --help
опции. Например, если Вы изменяете расположение в каталог,
где mysqld устанавливается и затем выполняет
следующую команду, это показывает эффект запуска сервера с основным каталогом /usr/local
:
shell> ./mysqld --basedir=/usr/local
--verbose --help
Можно определить другие опции такой как --datadir
также, но --verbose
и --help
должны быть последние опции.
Как только Вы определяете настройки пути, Вы хотите, запускаете сервер без --verbose
и --help
.
Если mysqld является в настоящий момент рабочим, можно узнать, какие настройки пути он использует, выполняя эту команду:
shell> mysqladmin
variables
Или:
shell> mysqladmin -h host_name
variables
host_name
имя узла сервера MySQL.
Удостоверьтесь, что сервер может получить доступ к каталогу данных. Владение и полномочия каталога данных и его содержания должны позволить серверу читать и изменять их.
Если Вы добираетесь Errcode 13
(что означает Permission
denied
) запускаясь mysqld,
это означает, что полномочия каталога данных или его содержания не разрешают доступ сервера. В этом
случае Вы изменяете полномочия для включенных файлов и каталоги так, чтобы сервер имел право
использовать их. Можно также запустить сервер как root
, но это повышает
вопросы безопасности и должно избежаться.
На Unix расположении изменения в каталог данных и проверку владение каталога данных и его
содержания, чтобы удостовериться у сервера есть доступ. Например, если каталог данных /usr/local/mysql/var
, используйте эту команду:
shell> ls -la /usr/local/mysql/var
Если каталог данных или его файлы или подкаталоги не принадлежат учетной записи, которую Вы
используете для того, чтобы выполнить сервер, изменяете их владение на ту учетную запись. Если
учетную запись называют mysql
, используйте эти команды:
shell>chown -R mysql /usr/local/mysql/var
shell>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 useCan't start server: Bind on unix socket...
Используйте постскриптум, чтобы определить, есть ли у Вас другое mysqld выполнение сервера. Если так, завершите работу сервера прежде, чем запустить mysqld снова. (Если другой сервер работает, и Вы действительно хотите выполнить многократные серверы, можно найти информацию о том, как сделать так в Разделе 5.6, "Выполняя Экземпляры MySQL Multiple на Одной Машине".)
Если никакой другой сервер не работает, выполните команду telnet
.
(Номер порта MySQL значения по умолчанию 3306.) Затем нажимают, Входят пару раз. Если Вы не
получаете сообщение об ошибке как your_host_name
tcp_ip_port_number
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
опция. См.