python - remote - error 2003(hy000): can''t connect to mysql server on
PyMySQL no puede conectarse a MySQL en localhost (4)
Dos conjeturas:
Ejecutar
mysqladmin variables | grep socket
mysqladmin variables | grep socket
para llegar a donde se encuentra el socket, e intente configurar una conexión como esta:pymysql.connect(db=''base'', user=''root'', passwd=''pwd'', unix_socket="/tmp/mysql.sock")
Ejecutar
mysqladmin variables | grep port
mysqladmin variables | grep port
y verifique que el puerto sea 3306. De lo contrario, puede configurar el puerto manualmente de la siguiente manera:pymysql.connect(db=''base'', user=''root'', passwd=''pwd'', host=''localhost'', port=XXXX)
Estoy tratando de conectarme a MySQL en localhost usando PyMySQL:
import pymysql
conn = pymysql.connect(db=''base'', user=''root'', passwd=''pwd'', host=''localhost'')
pero (ambos en Python 2.7 y Python 3.2) me sale el error:
socket.error: [Errno 111] Conexión rechazada
pymysql.err.OperationalError: (2003, "No se puede conectar al servidor MySQL en ''localhost'' (111)")
Estoy seguro de que mysqld se está ejecutando porque puedo conectarme con el comando mysql o phpMyAdmin. Además, puedo conectarme usando MySQLdb en Python 2 con casi el mismo código:
import MySQLdb
conn = MySQLdb.connect(db=''base'', user=''root'', passwd=''pwd'', host=''localhost'')
Parece que el problema está en el lado PyMySQL en lugar de MySQL, pero no tengo idea de cómo resolverlo.
Es necesario agregar el puerto a la conexión también. Intenta esto y funciona bien.
pymysql(Module Name).connect(host="localhost", user="root", passwd="root", port=8889, db="db_name")
Parece que cambiar localhost
a 127.0.0.1
corrige el error, al menos en mi configuración. Si no es así, buscaría errores en la tcp sockets connection
y, por supuesto, lo publicaría como un error en pymysql
bugtrack.
Resolví el problema reemplazando localhost
con 127.0.0.1
y cambiando la contraseña a mi contraseña de base de datos MYSQL como se muestra a continuación;
conn = pymysql.connect(
host = ''127.0.0.1'',
port = 3306,
user = ''root'',
passwd = ''XXXXXXXXX'',
db = ''mysql''
)