【问题标题】:mysql.connector.errors.ProgrammingError: 1698 (28000): Access denied for user 'root'@'localhost'mysql.connector.errors.ProgrammingError: 1698 (28000): Access denied for user 'root'@'localhost'
【发布时间】:2019-08-09 15:22:17
【问题描述】:

我是 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')

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 当我运行这部分时 INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password(' ')); ,它显示错误 1054 (42S22):“字段列表”中的未知列“密码”。你知道为什么会这样吗?
    【解决方案2】:

    我有一个 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 install python3-mysql.connector

    给 mySQL 一个密码:

    sudo mysql -uroot

    使用mysql;

    更新用户集 authentication_string=PASSWORD('mynewpassword') where User='root';

    注意:以上命令中保持root用户,只需设置密码即可。

    退出 mySQL:

    \q

    停止 mySQL 服务:

    sudo /etc/init.d/mysql 停止

    启动 mySQL 服务:

    sudo /etc/init.d/mysql 启动

    登录数据库测试新密码:

    sudo mysql -u root -p

    显示数据库;

    创建数据库 YOUR_DATABASE_NAME_HERE;

    CREATE USER 'YOUR_NEW_USERNAME'@'localhost' IDENTIFIED BY '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 安装,但安装应该类似。

    【讨论】:

    • 这条评论帮助我在 raspi 中设置了 mydb。我需要设置单独的用户。
    【解决方案3】:

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

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

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

    import mysql.connector
    
    mydb = mysql.connector.connect(host="localhost",
    
    user="nikhil",
    
    password="Nikhil_12345",
    
    database="database_name")
    
    print(mydb)
    

    现在为用户添加权限

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

    【讨论】:

      【解决方案4】:

      有同样的错误

      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 服务器现在可以使用 Python 脚本作为 CGI: http://127.0.0.1/cgi-bin/script_cgi.py

      https://www.tutorialspoint.com/python/python_cgi_programming.htm中了解更多关于python的CGI

      【讨论】:

        猜你喜欢
        • 2021-03-04
        • 2021-02-15
        • 1970-01-01
        • 2015-03-20
        • 2017-05-23
        • 2018-08-17
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        相关资源
        最近更新 更多