通过 python 连接 mysql 数据库时出现连接错误
Connection Error while connecting the mysql database through python
我正在尝试使用下面提到的 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
但根据上述错误,默认密码的授权不可用
有什么方法可以检查用户 ID 和密码,以便相应地在 python 代码中进行交叉验证和更新?
建议会有帮助
根据 SQL 文档 python library.you 需要指定 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)
按照以下步骤操作:
- 您必须安装 MySQL 服务器 (https://dev.mysql.com/downloads/installer/)
从此安装 MySQL 服务器。
- 安装
mysql-connector-python
(在您的 python 环境中)
使用此代码:
打开数据库连接
进口mysql.connector
mydb = mysql.connector.connect(host="127.0.0.1", port="3306", user="root", password="root", auth_plugin ="mysql_native_password")
打印(mydb)
我使用 webmin + python3 在我的 centOS VPS 上遇到了类似的问题。
起初我认为可能是连接包的问题,所以我尝试了:
'python3 -m pip install mysql-connector' ,在 python 中它将使用 'import mysql.connector'
'pip3 install PyMySQL' ,在 python 中使用 'import PyMySQL'
两者都没有解决问题。然后我从一个网站上找到了其他几种连接方式(我现在不记得它的地址了),其中详细解释了每种方式的优缺点,根据它,我最终选择使用mysqlclient.
- 'sudo pip3 install mysqlclient' ,我使用它是因为它更通用并且支持 python3.
以上都没有解决我的问题,我仍然遇到连接错误。
我尝试了几次随机测试,不小心用 root 和配置文件中的 skip-grant-tables 选项,我能够使用 SSH python 代码登录 mysql,但是这不是原因,因为无论我在代码中访问什么主机,本地主机、127.0.0.1、域、....
,一个正常的新创建用户仍然无法登录
所以我撤销了 skip-grant-tables 选项,因为没有保护是有风险的(仅用于测试)。
最近,MySQL 服务器默认已经存在用户 'root',我发现它有 4 个条目,所以我尝试在 webmin -> 服务器 -> 中创建 4 个单独的相似条目记录MySQL 服务器 -> 用户权限。
这些记录具有相同的用户名和较少的权限,但分配的主机内容相似。它们是 'local' 、 '127.0.0.1' 、 'myservername.vps.provider.ca' 、 '::1'
(不知道最后一个是什么意思)
并且,Bingo,添加以上 4 个条目后,新用户可以使用通过 python3 代码提供的密码 authenthicate 登录。
(记住第一次,你必须在MySQL服务器页面设置MySQL管理员'root'和密码,这样密码登录认证功能才会起作用,并且那个密码不需要与系统的root密码相同)
就是这样,这需要我 6 个小时。希望它也可以帮助使用 webmin 的人。无论如何,如果它对您有帮助,请投赞成票。谢谢
我正在尝试使用下面提到的 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
但根据上述错误,默认密码的授权不可用
有什么方法可以检查用户 ID 和密码,以便相应地在 python 代码中进行交叉验证和更新?
建议会有帮助
根据 SQL 文档 python library.you 需要指定 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)
按照以下步骤操作:
- 您必须安装 MySQL 服务器 (https://dev.mysql.com/downloads/installer/)
从此安装 MySQL 服务器。
- 安装
mysql-connector-python
(在您的 python 环境中) 使用此代码:
打开数据库连接
进口mysql.connector
mydb = mysql.connector.connect(host="127.0.0.1", port="3306", user="root", password="root", auth_plugin ="mysql_native_password")
打印(mydb)
我使用 webmin + python3 在我的 centOS VPS 上遇到了类似的问题。
起初我认为可能是连接包的问题,所以我尝试了:
'python3 -m pip install mysql-connector' ,在 python 中它将使用 'import mysql.connector'
'pip3 install PyMySQL' ,在 python 中使用 'import PyMySQL'
两者都没有解决问题。然后我从一个网站上找到了其他几种连接方式(我现在不记得它的地址了),其中详细解释了每种方式的优缺点,根据它,我最终选择使用mysqlclient.
- 'sudo pip3 install mysqlclient' ,我使用它是因为它更通用并且支持 python3.
以上都没有解决我的问题,我仍然遇到连接错误。
我尝试了几次随机测试,不小心用 root 和配置文件中的 skip-grant-tables 选项,我能够使用 SSH python 代码登录 mysql,但是这不是原因,因为无论我在代码中访问什么主机,本地主机、127.0.0.1、域、....
,一个正常的新创建用户仍然无法登录所以我撤销了 skip-grant-tables 选项,因为没有保护是有风险的(仅用于测试)。
最近,MySQL 服务器默认已经存在用户 'root',我发现它有 4 个条目,所以我尝试在 webmin -> 服务器 -> 中创建 4 个单独的相似条目记录MySQL 服务器 -> 用户权限。
这些记录具有相同的用户名和较少的权限,但分配的主机内容相似。它们是 'local' 、 '127.0.0.1' 、 'myservername.vps.provider.ca' 、 '::1'
(不知道最后一个是什么意思)
并且,Bingo,添加以上 4 个条目后,新用户可以使用通过 python3 代码提供的密码 authenthicate 登录。
(记住第一次,你必须在MySQL服务器页面设置MySQL管理员'root'和密码,这样密码登录认证功能才会起作用,并且那个密码不需要与系统的root密码相同)
就是这样,这需要我 6 个小时。希望它也可以帮助使用 webmin 的人。无论如何,如果它对您有帮助,请投赞成票。谢谢