Я использовал библиотеку python mysql.connector, чтобы внести изменения в свои локальные базы данных SQL-сервера, используя:
from __future__ import print_function
import mysql.connector as kk
cnx = kk.connect(user='root', password='password123',
host='localhost',
database='db')
cursor = cnx.cursor(buffered=True)
sql = "DELETE FROM examples WHERE id = 4"
number_of_rows = cursor.execute(sql)
cnx.commit()
cnx.close()
Это работает нормально, но когда я пробую тот же код с изменением только параметра host, например,
host='xxx.xxx.xxx.xxx'
(где IP - это IP-адрес сервера, подключенного к моей локальной сети.), он не будет обновлять эту конкретную базу данных на этом сервере.
Выведенная ошибка выглядит примерно так:
mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'xx.xxx.x.xx' (10060)
Почему это не сработает?






Во-первых, вы должны проверить, может ли ваш локальный IP-адрес получить доступ к вашему удаленному серверу (проверьте, есть ли у вас ограничение IP на вашем сервере), после проверки, использует ли ваша база данных mysql порт по умолчанию или нет. Если нет, вы должны указать порт в своем код.
Если ваш сервер находился в службе хостинга, вы можете проверить параметры mysql в панели управления. Для ping ваш сервер был доступен, но, возможно, не база mysql
Я проверил часть порта, там написано 3306. Как мне упомянуть порт? Хорошо, если ping не гарантирует доступ к базе данных mysql, как мне проверить, есть ли у меня доступ?
3306 - это порт по умолчанию для mysql, поэтому вам не нужно указывать конкретное соединение. Но на вашем сервере вам необходимо авторизовать вашу базу данных mysql для получения соединения извне. Для этого вам нужно задать вопрос своему хосту, если вы не можете сделать это в панели управления.
Убедитесь, что пользователь базы данных, которого вы используете для подключения к базе данных на удаленном хосте, имеет правильный доступ и права.
Вы можете проверить это из командной строки, используя:
mysql -u root -p password123 - h xxx.xxx.xxx.xxx db
Если это не сработает, выполните отладку следующим образом:
пинг xxx.xxx.xxx.xxx. Если хост доступен, перейдите к следующему шагу, если нет, то этот IP-адрес заблокирован, недоступен или неверен. Дважды проверьте IP-адрес и убедитесь, что они находятся в одной сети.
Проверьте, запущен ли mysqld на хосте. перезапуск службы mysqld. Если это так, перейдите к следующему шагу, если нет, запустите mysqld. Если он не хочет запускаться, установите его, запустите службу и настройте свою базу данных.
Telnet конкретный порт, чтобы увидеть, заблокирован ли порт. telnet xxx.xxx.xxx.xxx 3306. Если это работает, переходите к следующему шагу. Если это не работает, проверьте свои IPTables и проверьте, открыт ли порт на удаленном хосте.
Добавьте пользователя в mysql на хосте: https://dev.mysql.com/doc/refman/8.0/en/adding-users.html Перезапустите mysqld и повторите команду выше.
«проверьте своего пользователя на удаленном хосте и проверьте, доступен ли IP-адрес и не заблокирован ли порт (брандмауэр)» Как это проверить? Спасибо
Я проверил, могу ли я получить доступ к этому удаленному серверу, используя тест ping. Он работает отлично, но я не знаю, как проверить, использует ли моя база данных mysql порт по умолчанию или нет .. Как мне это сделать? Спасибо