2009-11-24 1 views
5

Были проблемы с StackOverflow по этому поводу, но я не нашел такой же ситуации. Это на OS X Leopard машины с использованием MySQLWeird MySQL Python mod_wsgi Не удается подключиться к серверу MySQL на проблему «localhost» (49)

Некоторые начиная информацию:

MySQL Server version  5.1.30 
Apache/2.2.13 (Unix) 
Python 2.5.1 
mod_wsgi 3 

mysqladmin также пропуском создания сетей в списке OFF

Я могу подключиться к MySQL из командной строки питона , Но когда я пытаюсь сделать это через mod_wsgi с помощью кода, который является копией и склеенные или с помощью Django я получаю отказ родовое соединение

OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (49)") 

Я посмотрел на руководство по MySQL и попытался его советы по устранению неполадок, таких как

telnet localhost 3306 

и I do получить соединение.

Я не пытаясь соединиться как корень, либо.

Любые идеи о том, что еще я мог проверить? Спасибо заранее!

ответ

0

Не слишком много на этом. Просто случайная догадка, но попробуйте использовать:

DATABASE_HOST = 'локальный' вместо 127.0.0.1

и/или попробовать закомментировать в вашем my.ini:

связывать-адрес 127.0.0.1

на кадре.

0

Бит нечетное, что работает telnet-соединение. Может быть, еще несколько способов неприятности выстрел:

shell> perror 49 
OS error code 49: Can't assign requested address 

Я хотел бы проверить интерфейс LOCALHOST первым, проверьте, если он имеет адрес IPv4. Возможно, далекий выбор, но у меня были проблемы, когда я сделал IPv6.

shell> ifconfig lo0 

Возможно, разрешение имен не работает внутри Apache/mod_wsgi/и т.д ..

import python 
print socket.gethostbyname('localhost') 
print socket.gethostbyaddr('127.0.0.1') 

Может быть, чтобы ты (то, что я способствовал Django) попробовать UNIX сокет в Django , он работает установка базы данных хоста на пути (начните с косой черты):

DATABASE_HOST = '/tmp/mysql.sock' 

Или где-либо файл сокета.

Последнее, проверьте журнал ошибок MySQL, если есть какие-то странные сообщения, например, они не могут привязываться к IP-адресу или порту.

Надеюсь, это поможет.

10

Я столкнулся с этой ошибкой, и это произошло из-за отказа SELinux./ USR/бен/HTTPD не имеют разрешения на подключение к порту 3306. Я исправил проблему с:

setsebool httpd_can_network_connect_db on 

Кажется, отлично работает и должен быть более безопасным, чем просто отключить SELinux. Как Авинаш Meetoo указывает ниже, вы можете использовать:

setsebool -P httpd_can_network_connect_db 

Для того, чтобы изменения SELinux сохраняются после перезагрузки.

+1

Большое спасибо. Я использую MySQL на CentOS Linux 6 с SELinux, работающим в режиме принудительного исполнения. Setsebool решила проблему отлично. –

+0

'setsebool -P httpd_can_network_connect_db on' еще лучше, поскольку он является постоянным. Без '-P', setsebool не сохраняется при перезагрузках. –

1

я получаю точно такое же сообщение об ошибке в Django:

OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (49)") 

Чтобы исправить это, я должен был явно установить порт MySQL к 3306 в файле настроек Джанго.

 Смежные вопросы

  • Нет связанных вопросов^_^