首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过python连接mysql数据库时出现的连接错误

问通过python连接mysql数据库时出现的连接错误
EN

Stack Overflow用户
提问于 2019-05-23 06:39:35
回答 3查看 7K关注 0票数 0

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

代码语言:javascript
复制
import mysql.connector

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

print(mydb)

但是,在运行此代码以测试我是否与MySQL连接时,我面临着无法理解的错误。

代码语言:javascript
复制
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、用户根和密码根。

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

是否有任何方法检查用户id和密码,以交叉验证和相应更新python代码?

建议会有帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-23 06:47:54

根据python的SQL文档,library.you需要将auth插件指定如下:

代码语言:javascript
复制
conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1',port=5000, database='test', auth_plugin='mysql_native_password')
print(conn)
票数 1
EN

Stack Overflow用户

发布于 2020-03-22 04:56:47

遵循以下步骤:

  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") 打印(Mydb)
票数 2
EN

Stack Overflow用户

发布于 2021-02-11 13:44:01

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

起初,我认为这可能是由于连接包造成的,所以我尝试了:

  1. 'python3 -m pip安装mysql-连接器‘,在python中将使用’导入mysql.connector‘。
  2. 'pip3 install PyMySQL‘,在python中使用'import PyMySQL’

两者都解决不了这个问题。然后我发现网站上有一些其他的连接方法(我现在不记得它的地址了),它详细解释了pro和它们的原因,根据它们,我最终选择了使用mysqlclient。

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

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

我尝试了几次随机测试,意外地在配置文件中使用根和跳过授予表选项,我能够使用SSH python代码登录mysql,但这不是原因,因为正常的新创建的用户仍然无法登录,无论我在代码中访问哪个主机,localhost,127.0.0.1,域,.

因此,我撤销跳过授予表选项,因为这是危险的,没有保护(只是为了测试)。

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

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

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

并且,宾果,在添加了上述4个条目之后,新用户可以使用通过python3代码提供的密码登录。

(请记住,第一次您必须在MySQL服务器页面中设置带有密码的MySQL管理' root‘,以便密码登录授权功能能够工作,并且密码不需要与系统的根密码相同)

仅此而已,这需要我6个小时。希望它也能帮助使用webmin的人。如果它对你有帮助,请投赞成票。谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56269353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档