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?
4 Réponses :
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;
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?
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.
ce commentaire m'a aidé à configurer mydb dans raspi. J'avais besoin de configurer un utilisateur séparé.
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';
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