Python MySQLdb – Error 1045: Acceso denegado para el usuario

Tengo un código python que va como

import MySQLdb import sys try: con = MySQLdb.connect(host = 'localhost',user = 'crawler',passwd = 'crawler', db = 'real_estate_analytics') #... rest of code ... except MySQLdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) 

El problema es que estoy recibiendo el siguiente error:

Error 1045: Access denied for user 'crawler'@'localhost' (using password: YES)

Si hago mysql en el terminal mysql -u crawler -pcrawler puedo acceder a las bases de datos sin ningún problema.

 mysql> show databases; +-----------------------+ | Database | +-----------------------+ | information_schema | | AL | | cloversoup | | codebar | | mysql | | performance_schema | | real_estate_analytics | | teste | +-----------------------+ 8 rows in set (0.00 sec) 

También he eliminado el usuario anónimo para evitar colisiones. Mis usuarios son

 mysql> select user,host from mysql.user; +---------+-----------+ | user | host | +---------+-----------+ | root | % | | crawler | localhost | | root | localhost | +---------+-----------+ 3 rows in set (0.00 sec) 

He otorgado todas las subvenciones a rastreadores (y privilegios vaciados), por lo que no debería ser el problema:

GRANT ALL PRIVILEGES ON *.* TO crawler@localhost IDENTIFIED BY 'crawler' WITH GRANT OPTION;

FLUSH PRIVILEGES;

como una cuestión de hecho:

 mysql> show grants; +-------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for crawler@localhost | +-------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'crawler'@'localhost' IDENTIFIED BY PASSWORD '*A594DECC46D378FDA13D7843740CBF4985E6969B' WITH GRANT OPTION | +-------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) 

También he intentado conectar usando el usuario root , haciendo

con = MySQLdb.connect(host = 'localhost',user = 'root',passwd = 'my_root_password', db = 'real_estate_analytics')

pero tampoco funciona (el mismo error).

Esto me está volviendo loco. ¿Alguien tiene una idea de cuál podría ser el problema?

OBS: Sé que hay preguntas similares en SO, pero las leí todas y no resolví mi problema. Es por eso que lo estoy publicando aquí.

‘localhost’ es y siempre ha sido especial con MySQL . En su caso, le otorga al rastreador @ localhost algunos privilegios y esto significaría que ‘el rastreador de usuarios se conecta a través del socket UNIX’. Y, estoy bastante seguro de que el servidor MySQL está configurado con –skip-networking .

Esto puede ser arreglado por ser explícito. Usando el argumento de conexión unix_socket de su controlador de base de datos, forzaría el uso del socket UNIX. (Enlace descarado a los documentos MySQL Connector / Python, ya que soy el mantenedor de ese controlador).