mysql.connector.errors.ProgrammingError:1698(28000):用户'root'@'localhost'

时间:2019-03-19 06:59:24

标签: mysql raspberry-pi3 access-denied mysql-connector-python

我是Raspberry Pi和MySQL的新手。

我已经在phpmyadmin中创建了一个代码数据库,该代码由PC中的wamp服务器运行。同时,我想在Raspberry Pi 3中运行此代码。除此之外,当我在Raspberry Pi 3中运行代码时,我希望数据可以保存在phpmyadmin中,因此,当我在PC上运行localhost时,从Raspberry Pi输入的内容也可以保存在PC中。但是,当我运行它时,它显示如下错误消息:

  

mysql.connector.errors.ProgrammingError:1698(28000):访问被拒绝   用户'root'@'localhost'

这是我的数据库:

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

有人知道如何解决这个问题吗?

4 个答案:

答案 0 :(得分:0)

使用以下查询并在您的数据库上执行。

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

答案 1 :(得分:0)

我有一个Raspberry Pi,并执行了以下步骤:

更新操作系统:

sudo apt-get更新&& sudo apt-get升级

安装mySQL服务器:

sudo apt-get install mysql-server

安装mySQL客户端:

sudo apt-get install mysql-client

检查mySQL的状态:

sudo服务mysql状态

安装mySQL python连接器:

sudo apt-get -y安装python3-mysql.connector

给mySQL一个密码:

sudo mysql -uroot

使用mysql;

更新用户集authentication_string = PASSWORD('mynewpassword'),其中User ='root';

注意:在上面的命令中保留root用户,只需设置密码即可。

退出mySQL:

\ q

停止mySQL服务:

sudo /etc/init.d/mysql stop

启动mySQL服务:

sudo /etc/init.d/mysql start

通过登录数据库来测试新密码:

sudo mysql -u根-p

SHOW DATABASES;

创建数据库YOUR_DATABASE_NAME_HERE;

创建用户“ YOUR_NEW_USERNAME” @“ localhost”,并由“ YOUR_NEW_PASSWORD”标识;

注意:Python需要一个新用户来允许与mySQL通信!我不知道为什么,但是它有用。

在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)

我花了几天的时间从十几个不同的网站上将其拼凑而成。希望我的笔记不会遗漏任何东西。在最后创建新用户似乎是关键问题。我的不是Windows安装,但安装应类似。

答案 2 :(得分:0)

您应该只在要访问数据库的数据库(mysql)中创建一个用户。

MT_Test

密码必须满足要求(1.一个大写字母,2。一个特殊字符)。 现在使用python

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

现在为用户添加权限

import mysql.connector

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

user="nikhil",

password="Nikhil_12345",

database="database_name")

print(mydb)

答案 3 :(得分:0)

有相同的错误

mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root' @ 'localhost' (using password: NO)

但是我试图使用CGI之类的python脚本。

这对我有用:

$ 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;

这是我的代码/usr/lib/cgi-bin/script_cgi.py的一部分:

#!/usr/bin/python3

import mysql.connector

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

您必须授予它权限: sudo chmod 755 /usr/lib/cgi-bin/script_cgi.py

还必须启用apache模块: sudo a2enmod cgid

然后访问localhost,Apache Server现在可以将Python脚本用作CGI: http://127.0.0.1/cgi-bin/script_cgi.py

有关https://www.tutorialspoint.com/python/python_cgi_programming.htm中的CGI和python的更多信息