mysql主机拒绝远程登录_pymysql:Mysql拒绝从远程访问的解决办法

pymysql:Mysql拒绝从远程访问的解决办法

pymysql连接数据库

# 导入pymysql模块

import pymysql

# 连接database

conn = pymysql.connect(

host="192.168.1.1",

user="root",

password="password",

db ="test",

charset ="utf8")

# 得到一个可以执行SQL语句的光标对象

cursor = conn.cursor() # 执行完毕返回的结果集默认以元组显示

# 得到一个可以执行SQL语句并且将结果作为字典返回的游标

# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 定义要执行的SQL语句

sql = "select * from account"

# 执行SQL语句

cursor.execute(sql)

# 关闭光标对象

cursor.close()

# 关闭数据库连接

conn.close()

报错内容

Traceback (most recent call last):

File "C:/Pycham/Mysql/test.py", line 10, in

charset ="utf8")

File "C:\Pycham\venv\lib\site-packages\pymysql\__init__.py", line 94, in Connect

return Connection(*args, **kwargs)

File "C:\Pycham\venv\lib\site-packages\pymysql\connections.py", line 325, in __init__

self.connect()

File "C:\Pycham\venv\lib\site-packages\pymysql\connections.py", line 598, in connect

self._get_server_information()

File "C:\Pycham\venv\lib\site-packages\pymysql\connections.py", line 975, in _get_server_information

packet = self._read_packet()

File "C:\Pycham\venv\lib\site-packages\pymysql\connections.py", line 684, in _read_packet

packet.check_error()

File "C:\Pycham\venv\lib\site-packages\pymysql\protocol.py", line 220, in check_error

err.raise_mysql_exception(self._data)

File "C:\Pycham\venv\lib\site-packages\pymysql\err.py", line 109, in raise_mysql_exception

raise errorclass(errno, errval)

pymysql.err.InternalError: (1130, "Host '219.139.78.81' is not allowed to connect to this MariaDB server")

解决办法

Mysql必须开启远程访问权限 才允许远程连接。

root帐户是无法远程登陆的,只可以本地登陆。

1.使用mysql数据库

use mysql;

2.添加用户允许从任何主机连接到mysql服务器

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

允许任何IP地址(上面的 % 就是这个意思)的电脑使用root用户 和密码(password)来访问这个MySQL Server 。

如果你想允许用户root从ip为192.168.1.1的主机连接到mysql服务器,并使用password作为密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.1' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH PRIVILEGES;

如果你想允许用户root从ip为192.168.1.1的主机连接到mysql服务器的dk数据库,并使用password作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'root'@'192.168.1.1' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH PRIVILEGES;

3.及时生效

FLUSH PRIVILEGES

aca5eb9664a64c97d1daade890be4c27.png

4.测试

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

# 导入pymysql模块

import pymysql

# 连接database

conn=pymysql.connect(

host="192.168.1.1",

user="root",

password="password",

db="test",

charset="utf8")

# 得到一个可以执行SQL语句的光标对象

cursor=conn.cursor() # 执行完毕返回的结果集默认以元组显示

# 得到一个可以执行SQL语句并且将结果作为字典返回的游标

# cursor= conn.cursor(cursor=pymysql.cursors.DictCursor)

# 定义要执行的SQL语句

sql= "select version()"# 执行SQL语句

cursor.execute(sql)

# #使用fetchone()方法获取一条数据

data=cursor.fetchone()

print("Mysql version : %s"%data)

# 关闭光标对象

cursor.close()

# 关闭数据库连接

conn.close()

View Code

20f976801c04c2a9f48f682c0be8f4b5.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值