【问题标题】:Connection Error while connecting the mysql database through python通过python连接mysql数据库时出现连接错误
【发布时间】:2019-10-09 16:21:48
【问题描述】:

我正在尝试使用下面提到的 python 代码连接 Mysql 服务器

import mysql.connector

mydb = mysql.connector.connect(
    host = "127.0.0.1",
    port = 5000,
    user = "user id",
    password = "password"
    )

print(mydb)

但是在运行此代码以测试我是否已与 MySQL 连接时,我遇到了我无法理解的错误。

Traceback (most recent call last):
  File "C:\Users\varul.jain\Desktop\Test Phase\Mysql\mydb_test.py", line 7, in <module>
    password = "root"
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection.py", line 95, in __init__
    self.connect(**kwargs)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\abstracts.py", line 716, in connect
    self._open_connection()
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection.py", line 210, in _open_connection
    self._ssl)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\connection.py", line 142, in _do_auth
    auth_plugin=self._auth_plugin)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\protocol.py", line 102, in make_auth
    auth_data, ssl_enabled)
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\protocol.py", line 58, in _auth_response
    auth = get_auth_plugin(auth_plugin)(
  File "C:\Users\varul.jain\AppData\Local\Programs\Python\Python36\lib\site-packages\mysql\connector\authentication.py", line 191, in get_auth_plugin
    "Authentication plugin '{0}' is not supported".format(plugin_name))
mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

注意:我已将默认值初始化为 5000

出于测试目的,我已经初始化了5000端口,用户-root和密码-root

但是根据上述错误,默认密码的授权不可用

有没有办法检查用户名和密码以交叉验证和更新python代码?

建议会有帮助

【问题讨论】:

标签: python mysql mysql-python mysql-connector


【解决方案1】:

根据python库的SQL文档。您需要指定auth插件如下:-

conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1',port=5000, database='test', auth_plugin='mysql_native_password')
print(conn)

【讨论】:

    【解决方案2】:

    按照以下步骤操作:

    1. 您必须安装 MySQL 服务器 (https://dev.mysql.com/downloads/installer/)

    从此安装 MySQL 服务器。

    1. 安装mysql-connector-python(在您的python环境中)
    2. 使用此代码:

      打开数据库连接

      导入 mysql.connector

      mydb = mysql.connector.connect(host="127.0.0.1", port="3306", user="root", password="root", auth_plugin="mysql_native_password")

      打印(我的数据库)

    【讨论】:

      【解决方案3】:

      我在使用 webmin + python3 的 centOS VPS 上遇到了类似的问题。

      一开始我认为可能是连接包的原因,所以我尝试了:

      1. 'python3 -m pip install mysql-connector',在python中会使用'import mysql.connector'

      2. 'pip3 install PyMySQL',在 python 中使用'import PyMySQL'

      两者都不能解决问题。后来我发现一个网站上还有其他几种连接方式(现在不记得地址了),详细说明了各自的优缺点,据此,我最终选择使用mysqlclient。

      1. 'sudo pip3 install mysqlclient',我用这个是因为它更通用,并且支持python3。

      以上都没有解决我的问题,我仍然面临连接错误。

      我尝试了几次随机测试,不小心使用了配置文件中的 root 和 skip-grant-tables 选项,我能够使用 SSH python 代码登录 mysql,但这不是原因,因为正常的新创建无论我在代码中访问什么主机,本地主机,127.0.0.1,域,...,用户仍然无法登录。

      所以我撤销了 skip-grant-tables 选项,因为没有保护会有风险(仅用于测试)。

      最近,在 MySQL 服务器中默认已经存在用户“root”,我发现它有 4 个条目,所以我尝试在 webmin -> 服务器 -> MySQL 服务器 -> 用户权限中创建 4 个单独的类似条目记录。

      这些记录具有相同的用户名和较少的权限,但分配的主机内容相似。它们是 'local' 、 '127.0.0.1' 、 'myservername.vps.provider.ca' 、 '::1'

      (不知道最后一个是什么意思)

      而且,Bingo,在添加了以上 4 个条目后,新用户可以使用 python3 代码提供的密码验证登录。

      (记得第一次,你必须在 MySQL Server 页面设置 MySQL Admin 'root' 和密码,这样密码登录认证功能才会起作用,并且密码不需要和系统的 root 密码相同)

      就是这样,这需要我 6 个小时。希望它也可以帮助使用 webmin 的人。无论如何,如果它对您有帮助,请给予积极的投票。谢谢

      【讨论】:

        猜你喜欢
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 2019-07-25
        • 2019-10-07
        • 2019-06-05
        • 1970-01-01
        相关资源
        最近更新 更多