Python >> Tutoriel Python >  >> Python Tag >> MySQL

Erreur de connexion SSL lors de l'utilisation du connecteur MySQL avec Python

Cela ne semble se produire que lorsque le mysql-connector-python la bibliothèque utilise les extensions C au lieu de l'implémentation python pure.

Depuis la version 8.0.11 , la valeur par défaut a changé et utilise désormais les extensions C si elles sont présentes.
https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html

Une solution consiste à forcer le connecteur à utiliser l'implémentation python via ce drapeau, en l'ajoutant simplement à l'url de connexion dans votre configuration :

url = 'mysql+mysqlconnector://user:[email protected]_server/database?use_pure=True'

J'ai eu le même problème et je l'ai résolu en ajoutant use_pure=True argument basé sur une suggestion ici :

import mysql.connector as sql

db_connection = sql.connect(host='****', database='****', user='****', password='****', use_pure=True)

Paquets pertinents sur mon mac :mysql-connector-python 8.0.16 et openssl 1.1.1b installé (les deux anaconda).


Cela a fonctionné pour moi (Ubuntu 16.04 LTS). Depuis le terminal :

  1. recréer les certificats (datadir est de votre choix) :

mysql_ssl_rsa_setup --datadir=/data/dir/

  1. Ajoutez ce qui suit à /etc/mysql/mysql.conf.d/mysqld.cnf :
ssl-ca=/data/dir/cacert.pem

ssl-cert=/data/dir/server-cert.pem

ssl-key=/data/dir/server-key.pem
  1. Redémarrer le serveur mysql :sudo service mysql restart