Проблема с подключением к MySQL из Python
Установил MySQL(MariaDB), из консоли с подключением проблем нет.
user > mysql
ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: NO)
рут с пустым паролем:
user > mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.0.26-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Есть такой фрагмент кода main.py:
import mysql.connector
from mysql.connector import Error
def create_connection(host_name, user_name, user_password):
connection = None
try:
connection = mysql.connector.connect(
host=host_name,
user=user_name,
passwd=user_password
)
print("Connection to MySQL DB successful")
except Error as e:
print(f"The error '{e}' occurred")
connection = create_connection("localhost", "root", "")
При выполнении этой прогаммы я получаю вывод:
user > ./main.py
The error '2003 (HY000): Can't connect to MySQL server on 'localhost' (111)' occurred
Фаервол отключен, из консоли все вроде нормально , а из питона не получается подключиться.
Ответы (1 шт):
Автор решения: AgentOrange
→ Ссылка
Все решилось добавлением дополнительного аргумента unix_sock:
import mysql.connector
from mysql.connector import Error
def create_connection(host_name, user_name, user_password, unix_sock):
connection = None
try:
connection = mysql.connector.connect(
host=host_name,
user=user_name,
passwd=user_password,
unix_socket=unix_sock
)
print("Connection to MySQL DB successful")
except Error as e:
print(f"The error '{e}' occurred")
connection = create_connection("localhost", "root", "psswd", "/var/run/mysql/mysql.sock")
Теперь это работает.