Подключение к удаленной базе данных 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. Если вы хотите подключить все удаленные адреса.