如何实现服务器远程操作本地数据库
创始人
2025-01-17 01:03:52
0次

如何实现服务器远程操作本地数据库

最近在整项目实训,有些模型比较大,放在本机上跑显然不太现实,那就必然需要放到服务器上跑,但是跑出来的数据终归要放到本地数据库上才能实现快速访问,这里就有一个问题,那就是该怎么实现对本地数据库的远程操作,也是花了的不少时间,在这里记录一下解决办法。

1、修改MySQL配置文件

  • 找到MySQl的文件目录,里面会有一个名为“my.ini”文件,如果操作系统是win的话,路径一般都差不多,这里放一下我的:
    在这里插入图片描述
  • 用记事本可以打开,但是没有办法修改,因此必须先用管理员权限打开记事本,然后在记事本内再打开该文件,最后对其进行修改保存,修改只需要找到[mysqld]部分,然后在下面添加一条:

bind-address:0.0.0.0

这允许MySQL监听所有网络接口的连接请求。

2、在MySQL中创建用户并授权

  • win+R输入cmd回车打开终端,输入:
mysql -u root -p  

之后输入你的密码即可开始对数据库进行操作,具体输入我下面列出的这几行命令即可:

CREATE USER 'username'@'服务器IP地址' IDENTIFIED BY 'password';  GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'服务器IP地址'; FLUSH PRIVILEGES;  FLUSH PRIVILEGES; 

这上面的“服务器IP地址”可以具体为你的服务器的外网IP,如果不清楚或者没有外网IP,可以用%替代,表示允许任何IP。密码自己设置一下即可。

  • 重启MySQL服务
    可以输入以下命令重启MySQL服务:
service mysql restart 

也可以在“开始”中搜索“服务”,打开后找到MySQL80,右击重启即可。

3、防火墙设置

这一步主要是确保你的本地网络的防火墙允许从服务器IP地址到本地数据库端口的入站连接。

  • 控制面板 -> Windows Defender 防火墙 -> 高级设置 -> 入站规则->新建规则。
  • “规则类型”选择“端口”。
  • “协议和端口”选择“TCP”,“特定本地端口”,输入“3306”。
  • “操作”选择“允许连接”。
  • 后面除了自己设置一个规则名字,就正常点击下一页即可。

4、服务器远程操作

一旦你的本地MySQL数据库配置好接受来自服务器的远程连接,并且用户权限和网络安全设置都已就绪,服务器上的应用就可以开始连接并操作这个数据库了。下面是服务器端进行数据库操作的一般步骤,包括如何使用Python编写代码来操作远程MySQL数据库。

步骤1: 在服务器上安装MySQL连接库

如果你打算使用Python来操作MySQL,你需要安装一个MySQL客户端库。mysql-connector-python 是一个流行的选择,可以直接通过pip安装:

pip install mysql-connector-python 
步骤2: 编写Python代码连接并操作数据库

在你的服务器端应用中,使用Python和mysql-connector-python库来连接到你的本地MySQL数据库并执行SQL语句。下面是一个基本示例:

import mysql.connector  def connect_and_query():     try:         # 连接到MySQL数据库         connection = mysql.connector.connect(             host='你的本地数据库的公网IP地址',             user='remote_user',             password='your_password',             database='你的数据库名'         )                  if connection.is_connected():             print("Connected to MySQL Server")                          # 创建一个cursor对象,用于执行查询             cursor = connection.cursor()                          # 执行查询             cursor.execute("SELECT * FROM your_table_name")                          # 获取查询结果             records = cursor.fetchall()             print("Total number of rows in table: ", cursor.rowcount)                          # 打印每行的数据             for row in records:                 print(row)      except mysql.connector.Error as e:         print("Error reading data from MySQL table", e)          finally:         if connection.is_connected():             cursor.close()             connection.close()             print("MySQL connection is closed")  # 调用函数 connect_and_query() 

5、IP映射

其实到了上一步,在服务器上运行脚本之后会发现还是没有办法连接到本地数据库,这是为什么呢?学过计网的同学应该都知道,我们的电脑都处在一个个局域网内,我们的主机IP都是内网IP,处于同一个内网下的主机可以通过内网IP相互访问,内网的主机也可以访问外网IP,但是外网无法通过内网IP访问我们的主机,这就是问题所在了。解决这个问题有两种办法:

  • 如果你的服务器和主机都分配有了ipv6地址,那么可以直接通过ipv6地址访问,因为这个ip绝对是唯一的。但是因为ipv6普及度并没有那么高,这个很难行得通。
  • 使用NAT技术进行IP穿透。

接下来主要讲一讲第二种方法,NAT技术就是将你的主机在局域网中的IP和端口映射到一个特定的外网IP和端口上,这样外面就可以通过这个特定的外网IP和端口号来间接访问你的内网IP和端口号。市面上有很多软件都可以实现,这里我用的是贝锐花生壳,免费的:

  • 下载之后,将本地的IP地址和3306端口写上,他就会给你映射后的IP地址和端口号,我的如下:
    在这里插入图片描述
  • 接下来再改一改数据库远程操作的代码,将映射后的端口号也加上:
connection = mysql.connector.connect(             host='映射后的IP地址',             port='映射后的端口号',             user='remote_user',             password='密码',             database='数据库名'         ) 

现在就可以正常连接并操作了!

相关内容

热门资讯

推荐十款!亚盈开挂功能方法,亚... 推荐十款!亚盈开挂功能方法,亚盈真是存在有开挂方法1、完成亚盈辅助器v3.3的残局,帮助玩家取得所有...
科技分享!五龙捕鱼开挂功能神器... 科技分享!五龙捕鱼开挂功能神器,五龙捕鱼本来有开挂神器1、在五龙捕鱼插件功能辅助器技巧中,中转单元十...
玩家必备科普!新九天辅助器功能... 玩家必备科普!新九天辅助器功能方法,新九天其实存在有辅助器方法1、新九天辅助器安装包、新九天辅助器2...
教程攻略!永乐透视功能方法,永... 教程攻略!永乐透视功能方法,永乐竟然有透视方法1、永乐辅助器安装包、永乐辅助器2、分享自己喜欢的永乐...
玩家必备科普!朋友安徽麻将透视... 玩家必备科普!朋友安徽麻将透视挂功能神器,朋友安徽麻将好像有透视挂神器1、每一步都需要思考,不同水平...
最新通报!东游三张牌辅助器功能... 最新通报!东游三张牌辅助器功能方法,东游三张牌本来有辅助器方法1、游戏颠覆性的策略玩法,独创攻略技巧...
玩家必看攻略!捕鱼联盟辅助器功... 玩家必看攻略!捕鱼联盟辅助器功能技巧,捕鱼联盟原来存在有辅助器技巧1、不需要AI权限,帮助你快速的进...
每日必看推荐!酷乐游戏透视挂功... 每日必看推荐!酷乐游戏透视挂功能脚本,酷乐游戏确实是有透视挂脚本1、下载好酷乐游戏透视辅助下载之后点...
科技介绍!游游棋牌开挂功能攻略... 科技介绍!游游棋牌开挂功能攻略,游游棋牌竟然真的是有开挂攻略游游棋牌辅助器是一种具有地方特色的麻将游...
今日头条!天酷大厅开挂功能工具... 今日头条!天酷大厅开挂功能工具,天酷大厅确实是真的有开挂工具天酷大厅能透视中分为三种模型:天酷大厅模...