我试图连接到MySQL服务器使用下面提到的Python代码
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代码中进行交叉验证和更新?
建议将是有益的
4条答案
按热度按时间2uluyalo1#
请按照以下步骤操作:
1.您必须安装MySQL服务器(https://dev.mysql.com/downloads/installer/)
安装MySQL Server。
1.安装
mysql-connector-python
(在您的python环境中)1.使用此代码:
打开数据库连接
导入mysql.connector
mydb = mysql.connector.connect(host=”127.0.0.1“,port=“3306”,user=“root”,password=“root”,auth_plugin=“mysql_native_password”)
打印(mydb)
xa9qqrwz2#
根据Python的SQL文档library.you需要指定auth插件如下:
dxxyhpgq3#
我在使用webmin + python3的centOS VPS上遇到了类似的问题。
一开始我觉得可能是连接包的问题,所以我试了一下:
1.'python3 -m pip install mysql-connector',在python中它将使用'import mysql.connector'
1.'pip 3 install PyMySQL',在python中使用'import PyMySQL'
两者都不能解决问题。然后我发现有一对夫妇的其他连接方法从一个网站(我不记得它的地址现在),其中详细解释了利弊的每一个,根据它,我最终选择使用mysqlclient。
1.‘sudo pip 3 install mysqlclient‘,我使用这个是因为它更通用,并且有对python3的支持。
以上都没有解决我的问题,我仍然面临连接错误。
我尝试了几个随机测试,并意外地使用root和配置文件中的skip-grant-tables选项,我能够使用SSH python代码登录mysql,但这不是原因,因为无论我在代码中访问什么主机,localhost,www.example.com,域,正常的新创建的用户仍然无法登录127.0.0.1。
所以我撤销了跳过赠款表选项,因为这是没有保护的风险(只是为了测试)。
最近,从默认已经存在的用户'根'在MySQL服务器,我发现它有4个条目,所以我尝试创建4个单独的类似条目记录在webmin ->服务器-> MySQL服务器->用户权限。
这些记录具有相同的用户名和较少的特权,但是具有分配的相似的主机内容。它们是“local”、“127.0.0.1”、“myservername.vps.provider.ca”、“::1”
(我不知道最后一个是什么意思)
而且,宾果,在添加了以上4个条目之后,新用户能够使用通过python3代码提供的密码认证登录。
(记得第一次,你必须在MySQL服务器页面设置MySQL管理员'root'和密码,这样密码登录身份验证功能才能工作,并且该密码不需要与系统的root密码相同)
就这样,这花了我6个小时。我希望它也能帮助使用webmin的人。请给予赞成票,如果它有助于你无论如何。谢谢
xzv2uavs4#
我遇到了一个类似的问题,只是使用其中之一:
从mysql.connector.plugins导入mysql_native_password*
这将解决问题