Справочное руководство по MySQL версии 4.1.1-alpha



         

A.2.3 Ошибка Can't connect to [local] MySQL server - часть 2


Ниже приводится несколько причин, которые могут вызывать ошибку Can't connect to local MySQL server:

  • mysqld не выполняется.

  • Сервер запущен на системе, использующей MIT-потоки. При работе на системе, в которой отсутствуют "родные" потоки, mysqld использует пакет MIT-pthreads (see section 2.2.5 Операционные системы, поддерживаемые MySQL). Однако не во всех версиях MIT-потоков поддерживаются Unix-сокеты. В системе без поддержки сокетов при соединении с сервером всегда необходимо явно указывать имя хоста. Попробуйте проверить соединение с сервером с помощью следующей команды:

    shell> mysqladmin -h `hostname` version

  • Кто-либо удалил Unix-сокет, используемый mysqld (по умолчанию `/tmp/mysqld.sock'). Возможно, есть задание cron, которое удаляет сокет MySQL (например, задание, удаляющее старые файлы в каталоге `/tmp'). В таком случае всегда можно выполнить mysqladmin version и проверить, действительно ли существует сокет, который используется mysqladmin. Решение здесь заключается в следующем: можно либо изменить задание cron с тем, чтобы оно не удаляло `mysqld.sock', либо поместить сокет в каком-нибудь другом месте (see section A.4.5 Как защитить или изменить сокет-файл MySQL `/tmp/mysql.sock').

  • Сервер mysqld запущен с опцией --socket=/path/to/socket. Если путь к сокету для сервера был изменен, то необходимо уведомить о новом пути и клиентов MySQL. Это можно сделать, передав клиенту путь к сокету в качестве аргумента. see section A.4.5 Как защитить или изменить сокет-файл MySQL `/tmp/mysql.sock'.

  • Используется Linux, и один из потоков аварийно завершился (core dump). В этом случае, перед тем как заново запустить MySQL, необходимо уничтожить все остальные потоки mysqld (например, с помощью сценария mysql_zap). Обращайтесь к разделу See section A.4.1 Что делать, если работа MySQL сопровождается постоянными сбоями.

  • Возможно, пользователь, от которого запущен MySQL-сервер, не имеет привилегий чтения и записи для каталога, содержащего сокет-файл, либо для самого сокет-файла. В этом случае необходимо либо изменить привилегии для каталога/файла, либо перезапустить mysqld, так чтобы сервер использовал каталог, к которому пользователь имеет доступ.

    Если получено сообщение об ошибке Can't connect to MySQL server on some_hostname, то чтобы выяснить, в чем проблема, можно попробовать выполнить следующие действия:

    • Проверить, запущен ли сервер, выполнив telnet your-host-name tcp-ip-port-number, и несколько раз нажать Enter. Если MySQL работает на этом порту, то должен быть получен ответ, включающий номер версии запущенного сервера. Если будет выдана ошибка вроде telnet: Unable to connect to remote host: Connection refused, то на указанном порту сервер не работает.

    • Попробуйте соединиться с демоном mysqld на локальной машине и проверьте с помощью mysqladmin variables, какой порт TCP/IP сконфигурирован для использования mysqld (переменная port).

    • Проверьте, не запускается ли сервер mysqld с опцией --skip-networking.




      Содержание  Назад  Вперед