2015-06-25 4 views
2

Мне нужно использовать python для подключения базы данных в phpMyAdmin.Не могу подключить базу данных MySQL в phpMyAdmin от python

import MySQLdb 
db = MySQLdb.connect(host="10.0.0.140",port=80,user="root",passwd="password") 
cursor=db.cursor() 
cursor.execute("SHOW DATABASES") 
results=cursor.fetchall() 
for result in results: 
print row 

и я получаю эту ошибку

2013,"Lost connection to MySQL server at'waiting for initial communication packet',system error:0" 

я могу получить доступ к базе данных в хроме, так что я не думаю, что это проблема удаленного доступа.

=================================================================================================== =

Настоящая причина в том, что я нахожусь в ограниченном сегменте сети. (возможно)

Существует что-то не так с подключением к SQL из моего кода.

Если изменяли такой код: (порт не требуется)

MySQLdb.connect(host="10.0.0.140",user="root",passwd="password") 

Люди в общественном чистой сегменте можно подключить PhpMyAdmin, но я не могу.

Я не могу изменить свой сегмент сети, поэтому я не могу подтвердить, что это настоящая причина.

Но это единственное различие между мной и другими.

+1

Вы уверены, что используете его в порту 80? – MrSimpleMind

+0

Где находится база данных, к которой вы обращаетесь, расположена? Это у вашего хозяина где-то или на вашей локальной машине? –

+0

Я сомневаюсь, что он запущен в порту 80, это URL-адрес вашего phpMyAdmin, а не основного сервера базы данных mysql. Является ли это общедоступной средой? Или вы запускаете это на своей локальной машине? – MrSimpleMind

ответ

0

Это не так, как вы должны сделать Это. phpMyAdmin предоставляет HTML-код пользователю и должен использоваться в веб-браузере. Вы должны напрямую подключиться к хосту MySQL, который обычно прослушивает порт: 3306. Кроме того, вы должны иметь в виду, что на производстве серверы MySQL обычно не прослушивают публичные интерфейсы.

+0

Вы имеете в виду, может быть, порт 3306? И IP не 10.0.0.140, потому что это phpMyAdmin's? –

+0

phpMyAdmin - это просто интерфейс к серверу MySQL, поэтому вы не можете использовать его на своем пути. Хотя, если сервер MySQL прослушивает сетевой интерфейс и брандмауэр принимает подключения к этому конкретному порту, тогда вы в порядке, и вы можете подключиться из внешнего мира к порту 3306. – mishunika

1

Проверьте соединение, вы уверены, что используете свой mysql в порту 80?

Как я писал в комментариях, я сомневаюсь, что он запускает порт 80, это URL-адрес вашего phpMyAdmin, а не основного сервера базы данных mysql. Обычно веб и база данных работают на разных компьютерах, разных IP-адресах и т. Д. Является ли это общедоступной средой? Или вы запускаете это на своем локальном компьютере.

Если это ваш локальный компьютер, то переход на порт 3306 должен работать.

Если это хостинг-провайдер, то вам необходимо проверить URL-адрес JDBC. Как вы писали, это хостинг-партнер XXXX. Затем проверьте свой XXX, и он предоставит вам URL-адрес XXX jdbc для вашего mysql и обязательно предоставит пользователю доступ, чтобы вы могли подключиться к mysql с вашей рабочей станции удаленно. MySQL URL/хост может быть что-то вроде этого NNNN-AAAA-BBBB-КПКГ-dddd.xxx.domain.xx

Также вы попробуйте PyMYSQL

import pymysql 
db = pymysql.connect(host='10.0.0.140',user='root',passwd='password') 
cursor = db.cursor() 
query = ("SHOW DATABASES") 
cursor.execute(query) 
for r in cursor: 
print r 
+0

Кажется, я должен попросить IT получить реальный IP-адрес и порт. Спасибо за то, что ответили так много! Надеюсь, я смогу это сделать с вашей помощью. –