Добрый день. Не могу подключиться к Mysql серверу. Если быть точнее, то подключение к серверу и вход в Mysql через консоль работает, но с помощью яп Python у меня не получается этого сделать. Многое перепробывал, но ничего не выходит.
Вот мой код:
from sshtunnel import SSHTunnelForwarder server = SSHTunnelForwarder( 'vh394.timeweb.ru', ssh_username='cc70818', ssh_password='my_password', remote_bind_address=('127.0.0.1', 3306) ) server.start() connector = pymysql.connect( host="37.76.166.225", #мой ip (так же пробовал через 127.0.0.1) port=server.local_bind_port, user="cc70818_1", password="db_password", database="cc70818_1", ) server.stop()
После выполнения кода получаю вот такую ошибку:
Traceback (most recent call last): File "/home/kostya/.local/lib/python3.8/site-packages/pymysql/connections.py", line 613, in connect sock = socket.create_connection( File "/usr/lib/python3.8/socket.py", line 808, in create_connection raise err File "/usr/lib/python3.8/socket.py", line 796, in create_connection sock.connect(sa) ConnectionRefusedError: [Errno 111] Connection refused During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/kostya/PycharmProjects/my_project_/mysql_/mysql_class.py", line 89, in <module> connector = pymysql.connect( File "/home/kostya/.local/lib/python3.8/site-packages/pymysql/connections.py", line 353, in __init__ self.connect() File "/home/kostya/.local/lib/python3.8/site-packages/pymysql/connections.py", line 664, in connect raise exc pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '37.76.166.225' ([Errno 111] Connection refused)")
Но почему так происходит я не понимаю, ведь с консоли всё получается. Буду рад любой помощи (помогите пожалуйста).
Ответы (1)
pip install mysql-connector-python
Скрипт (виртуальный хостинг Ubuntu 18.04.6 LTS, Python 3.6.9):
import mysql.connector
db = mysql.connector.connect(
host="localhost",
user="cc40000_mydb",
password="12345678",
database="cc40000_mydb"
)
cursor = db.cursor()
cursor.execute("SELECT * FROM STATS LIMIT 10")
result = cursor.fetchall()
for x in result:
print(x)