我正在尝试从托管提供商服务器上的 Python 连接到 MySQL。我已经创建了数据库,我可以通过 SSH 和 PHP 连接到它。当我尝试使用 Python 连接时,出现错误
Access denied for user 'user_name'@'::1' (using password: YES)
。
我认为这可能是由于 Python 将 localhost 解析为 IPv6。我的用户可能没有 [::1] 或 127.0.0.1 上的访问权限,只能在 localhost 上访问。是否可以阻止这种行为?
如果不是,我可以尝试什么或者我应该向我的主机询问什么来连接到数据库?
我尝试了 pymysql 和 mysql.connector ,结果相同。
我尝试将主机更改为 127.0.0.1 或 [::1]。我的主机明确表示我应该与本地主机连接。
我的简短测试脚本:
import os
import sys
import pymysql
pymysql.install_as_MySQLdb()
import mysql.connector
sys.path.insert(0, os.path.dirname(__file__))
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
message = 'It works!\n'
version = 'Python v' + sys.version.split()[0] + '\n'
conn_message = ''
conn = mysql.connector.connect(host='localhost', user='user_name', password='password', database='db_name', port=3306)
# conn = pymysql.connect(host='localhost', user='user_name', passwd='password', db='db_name', port=3306)
if conn:
conn_message = 'MySQL: Yes :)'
else:
conn_message = 'MySQL: No :('
conn.close()
response = '\n'.join([message, version, conn_message])
return [response.encode()]
您可以使用
更新用户表UPDATE mysql.user SET host = 'localhost' WHERE user = 'user_name'
localhost 首先尝试打开套接字,然后尝试打开 tco/ip 连接。
但您的提供似乎不允许 tcp/ip 连接。