_mysql_connector.MySQLInterfaceError: Host ‘112.96.228.148’ is not allowed to connect to this MariaDB server 或“_mysql_connector.MySQLInterfaceError: Access denied for user ‘cyberpanel’@‘112.96.228.148’ (using password: YES) 都是下面的报错
一、前言
在使用python远程连接数据库的时候报错,报错原因是因为该ip没有权限连接这个数据库,报错的图片如下
1、远程连接服务器mysql数据库的pyhon示例程序
import mysql.connector
# 数据库连接配置
config = {
'user': 'cyberpanel', # 你的 MySQL 用户名
'password': '123456', # 你的 MySQL 密码
'host': 'MySQL 服务器的公网 IP', # MySQL 服务器的公网 IP
'database': 'hello', # 要访问的数据库名称
'port': 3306 # MySQL 的端口号,默认为 3306
}
try:
# 建立连接
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
# 执行查询
cursor.execute("SELECT * FROM student")
# 获取查询结果
for row in cursor.fetchall():
print(row)
finally:
# 关闭连接
cursor.close()
cnx.close()
二、解决过程
错误信息 “_mysql_connector.MySQLInterfaceError: Access denied for user ‘cyberpanel’@‘112.96.228.148’ (using password: YES)” 表示用户 cyberpanel
试图从 IP 地址 112.96.228.148
访问 MySQL/MariaDB 服务器 154.41.229.92
,但是没有成功。这通常是因为以下几个原因:
- 密码错误:确保为
cyberpanel
用户提供的密码是正确的。 - 用户权限:
cyberpanel
用户可能没有权限从 IP112.96.228.148
连接到数据库服务器。 - 用户不存在:在指定的主机名或 IP 地址上,可能没有为
cyberpanel
用户创建账户。
解决步骤
1. 确认密码
首先,确保密码是正确的。你已经在配置中指定了密码 'zd'
。
2. 检查用户权限
你需要检查 cyberpanel
用户是否有权限从 IP 112.96.228.148
连接。这通常需要访问数据库服务器的 shell 或使用具有足够权限的其他数据库账户来检查和修改权限。
查看现有用户和主机
登录到 MySQL/MariaDB 服务器,执行以下命令查看 cyberpanel
用户的权限:
SELECT user, host FROM mysql.user WHERE user='cyberpanel';
这将显示 cyberpanel
用户可以从哪些主机连接。如果没有列出 112.96.228.148
或者通配符 %
(表示任何主机),则需要添加相应的权限。
授权从该 IP 连接
如果 cyberpanel
用户没有从 112.96.228.148
连接的权限,你可以通过如下命令授权:
GRANT ALL PRIVILEGES ON hello.* TO 'cyberpanel'@'112.96.228.148' IDENTIFIED BY 'zd';
FLUSH PRIVILEGES;
这将授予 cyberpanel
用户从 IP 112.96.228.148
访问数据库 hello
的权限。
3. 使用 %
通配符
如果你希望 cyberpanel
用户能够从任何 IP 地址连接(请注意这可能会引入安全风险),你可以使用 %
通配符:
GRANT ALL PRIVILEGES ON hello.* TO 'cyberpanel'@'%' IDENTIFIED BY 'zd';
FLUSH PRIVILEGES;
4. 确认 MySQL/MariaDB 配置
确保 MySQL/MariaDB 服务器配置允许远程连接。检查 my.cnf
或 my.ini
配置文件中的 bind-address
参数,确保它不是设置为 127.0.0.1
(这将限制连接到本地主机)。如果需要修改,将其改为 0.0.0.0
或注释掉该行,然后重启 MySQL/MariaDB 服务。
5. 检查网络和防火墙设置
确保没有网络问题或防火墙规则阻止从 112.96.228.148
到 154.41.229.92
的连接。这可能包括服务器端的防火墙规则和/或云服务提供商的网络访问策略。
按照这些步骤操作后,你应该能够解决访问拒绝的问题。如果问题仍然存在,请检查错误日志以获取更多信息,这可能会提供额外的线索。