1
votes

mysql.connector.errors.ProgrammingError: 1698 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost'

Je suis un débutant en Raspberry Pi et MySQL.

J'ai créé un code, une base de données en phpmyadmin qui fonctionnait par le serveur wamp sur mon PC. En attendant, je veux exécuter ce code dans Raspberry Pi 3. En plus de cela, lorsque je lance le code dans Raspberry Pi 3, je veux que les données puissent être sauvegardées dans phpmyadmin, donc, lorsque j'exécute localhost sur mon PC, les entrer à partir de Raspberry Pi peut également être enregistré sur le PC. Mais, quand je l'ai exécuté, il affiche un message d'erreur comme celui-ci:

mysql.connector.errors.ProgrammingError: 1698 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost'

Voici ma base de données:

#connect to db
db = mysql.connector.connect(host = 'localhost', user = 'root', password = 
'', database = 'user')

Quelqu'un sait comment résoudre ce problème?


0 commentaires

4 Réponses :


0
votes

Utilisez la requête ci-dessous et exécutez-la sur votre base de données.

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;


1 commentaires

quand j'exécute cette partie INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password ('')); , il affiche une ERREUR 1054 (42S22): Colonne inconnue 'Mot de passe' dans 'liste des champs'. Savez-vous pourquoi cela s'est produit?



2
votes

J'ai un Raspberry Pi et j'ai suivi les étapes suivantes:

Mettre à jour le système d'exploitation:

sudo apt-get update && sudo apt-get upgrade

Installer le serveur mySQL :

sudo apt-get install mysql-server

Installer le client mySQL:

sudo apt-get install mysql-client

Vérifier status of mySQL:

sudo service mysql status

Installer le connecteur python mySQL:

sudo apt-get -y install python3-mysql.connector

Donnez un mot de passe à mySQL:

sudo mysql -uroot

use mysql;

mettre à jour l'utilisateur set authentication_string = PASSWORD ('mynewpassword') where User = 'racine';

Remarque: Dans la commande ci-dessus, gardez l'utilisateur root, définissez simplement le mot de passe.

Quittez mySQL:

\ q

Arrêter Services mySQL:

sudo /etc/init.d/mysql stop

Démarrez les services mySQL:

sudo /etc/init.d/mysql start p>

Testez le nouveau mot de passe en vous connectant à la base de données:

sudo mysql -u root -p

SHOW DATABASES;

CREATE DATABASE YOUR_DATABASE_NAME_HERE ;

CRÉER L'UTILISATEUR 'VOTRE_NEW_USERNAME' @ 'localhost' IDENTIFIÉ PAR 'VOTRE_NEW_PASSWORD';

Remarque: Python a besoin d'un nouvel utilisateur pour autoriser la communication avec mySQL! Je ne sais pas pourquoi mais ça marche.

En Python:

import mysql.connector  

# The following code tests Pythons connection to mySQL
mydb = mysql.connector.connect(
  host="localhost",
  user="YOUR_NEW_USER",
  password="YOUR_NEW_PASSWORD"
)

print(mydb)

Il m'a fallu plusieurs jours pour rassembler cela à partir d'une douzaine de sites Web différents. J'espère que mes notes n'ont rien manqué. La création du nouvel utilisateur à la fin semble être le problème clé. La mienne n'est pas une installation Windows mais l'installation devrait être similaire.


1 commentaires

ce commentaire m'a aidé à configurer mydb dans raspi. J'avais besoin de configurer un utilisateur séparé.



0
votes

Vous ne devez créer un utilisateur que dans la base de données (mysql) via laquelle vous accédez à la base de données.

USE database_name;

GRANT ALL PRIVILEGES ON database_name.* TO 'nikhil'@'localhost';

Le mot de passe doit répondre à l'exigence (1.Une majuscule, 2.Une spéciale personnage). Maintenant, utilisez python

import mysql.connector

mydb = mysql.connector.connect(host="localhost",

user="nikhil",

password="Nikhil_12345",

database="database_name")

print(mydb)

Maintenant, ajoutez des privilèges à l'utilisateur

CREATE USER 'nikhil'@'localhost' IDENTIFIED BY 'Password';


0 commentaires

0
votes

a la même erreur

mysql.connector.errors.ProgrammingError: 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NON)

mais j'étais essayer d'utiliser des scripts python comme CGI.

cela a fonctionné pour moi:

#!/usr/bin/python3

import mysql.connector

connection = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='books')

Cela fait partie de mon code / usr / lib / cgi -bin / script_cgi.py :

$ sudo mysql -u root
> use mysql;                                                    
> update user set authentication_string=PASSWORD("") where user = "root";
> update user set plugin="mysql_native_password" where user = "root";
> flush privileges;

vous devez lui donner les permissions: sudo chmod 755 /usr/lib/cgi-bin/script_cgi.py

Vous devez également activer le module apache: sudo a2enmod cgid

puis visitez localhost et Apache Server peut maintenant utiliser des scripts Python comme CGI: http://127.0.0.1/cgi-bin/script_cgi.py

Pour plus d'informations sur CGI avec python dans https://www.tutorialspoint.com/python/python_cgi_programming.htm


0 commentaires