PyMySQL ne peut pas se connecter à MySQL sur localhost

j'essaie de me connecter à MySQL sur localhost en utilisant PyMySQL:

import pymysql
conn = pymysql.connect(db='base', user='root', passwd='pwd', host='localhost')

mais (à la fois sur Python 2.7 et Python 3.2) j'obtiens l'erreur:

socket.erreur: [Errno 111] connexion refusée

pymysql.ERR.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' (111)")

je suis sûr que mysqld est en cours d'exécution parce que je peux me connecter en utilisant mysql commande ou phpMyAdmin. De plus, je peux me connecter en utilisant MySQLdb sur Python 2 avec presque le même code:

import MySQLdb
conn = MySQLdb.connect(db='base', user='root', passwd='pwd', host='localhost')
25
demandé sur O'Fermah 2011-07-30 22:31:09
la source

4 ответов

Deux suppositions:

  1. Exécuter mysqladmin variables | grep socket pour obtenir de l'endroit où le support est situé, et essayez de configurer une connexion comme ceci:

    pymysql.connect(db='base', user='root', passwd='pwd', unix_socket="/tmp/mysql.sock")
    
  2. Exécuter mysqladmin variables | grep port et vérifier que le port est 3306. Si non, vous pouvez paramétrer le port manuellement comme ceci:

    pymysql.connect(db='base', user='root', passwd='pwd', host='localhost', port=XXXX)
    
43
répondu RecursivelyIronic 2013-01-16 09:11:01
la source

semble changer localhost127.0.0.1 corrige l'erreur, au moins dans ma configuration. Si ce n'est pas le cas, je chercherais des erreurs dans tcp sockets connection et, bien sûr, de poster comme un bug dans pymysql bugtrack.

7
répondu BrainStorm 2018-01-10 00:24:01
la source

j'ai résolu le problème en remplaçant localhost127.0.0.1 et changer le mot de passe pour mon mot de passe de base de données MYSQL comme montré ci-dessous;

conn = pymysql.connect(
    host = '127.0.0.1',
    port = 3306,
    user = 'root',
    passwd = 'XXXXXXXXX',
    db = 'mysql'
)
4
répondu Byron Kats 2017-09-30 18:49:23
la source

Vous devez ajouter le port pour la connexion. Essayez ceci et cela fonctionne très bien.

pymysql(Module Name).connect(host="localhost", user="root", passwd="root", port=8889, db="db_name")
0
répondu Satheesh Polu 2017-12-28 19:53:42
la source

Autres questions sur