Подключение к удаленной базе данных MySQL через Python

Я пробовал следующий script, но, к сожалению, не работает. Я использую бесплатный поставщик базы данных MySQL. Любые идеи?

import MySQLdb

myDB = MySQLdb.connect(host="208.11.220.249",port=3306,user="XXXXX",passwd="XXXXX",db="XXXXX")
cHandler = myDB.cursor()
cHandler.execute("SHOW DATABASES")
results = cHandler.fetchall()
for items in results:
    print items[0]

В настоящее время я получаю следующую ошибку:

super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1044, "Access denied for user 'XXXXX'@'%' to database 'XXXXX'")

Ответ 1

 GRANT ALL
 ON  *.*
 TO [email protected]  -- client ip address
 IDENTIFIED BY 'pwd';

Edit

Это SQL, который вы запускаете в базе данных, чтобы гарантировать, что user имеет доступ ко всему. pwd - пароль user.

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

Ответ 2

Это то, что я сделал бы

  • Посмотрите, действительно ли порт открыт на этом компьютере.
  • На машине, с которой вы подключаетесь, откройте консоль /cmd/terminal и посмотрите, можете ли вы подключиться с помощью mysql -u XXXX -h 208.11.220.249 -p. Если ваш клиент mysql не может подключиться, тогда вы не можете подключиться с помощью python

Ответ 3

У вас нет разрешения на подключение к базе данных с этим пользователем. Выполните следующие действия:

1.Попробуйте подключиться к mysql DB:  mysql -h208.11.220.249 -uXXXXX -pXXXXX XXXXX

2.Если у вас нет разрешения на подключение к БД, попробуйте создать пользователя с дистанционным разрешением

ГРАНТ ВСЕ   ON DB. * - Название базы данных  К user @ip - клиентский IP-адрес  IDENTIFIED BY 'pwd';

3.В последней проверке my.cnf. "bind-address" должен быть 0.0.0.0. Если вы хотите подключить все удаленные адреса.