使用frp内网穿透将个人主机上的MySQL发布到公网上,再通过python管理MySQL

news2024/11/15 15:48:03

目录

1.frp内网穿透部署

1.frp服务器

1.开放端口

2.上传软件包

3.解压

4.配置文件

2.frp客户端

1.上传软件包

2.配置文件

3.启动测试

1.浏览器查看服务器上连接的客户端数量

2.启动测试

2.MySQL安装

3.python3的安装使用

4.python管理MySQL

1.pip

 2.pandas

3.pymysql

 4.python管理MySQL

5.其他用法


1.frp内网穿透部署

1.frp服务器

1.开放端口
[root@master-mysql ~]# firewall-cmd --zone=public --add-port=7000/tcp --permanent
success
[root@master-mysql ~]# firewall-cmd --zone=public --add-port=7500/tcp --permanent
success
[root@master-mysql ~]# firewall-cmd --zone=public --add-port=6000-6100/tcp --permanent
success
[root@master-mysql ~]# firewall-cmd --reload
success
2.上传软件包

3.解压
[root@localhost ~]# tar -xf frp_0.33.0_linux_amd64.tar.gz 
[root@localhost ~]# cp -r frp_0.33.0_linux_amd64 /usr/local/frp/
[root@localhost ~]# ls /usr/local/frp/
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd
4.配置文件
[root@master-mysql ~]# cd /usr/local/frp/
[root@master-mysql frp]# chmod 777 frps
[root@master-mysql frp]# vim ./frps.ini
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = abc
dashboard_pwd = abc
token = aaa123

2.frp客户端

1.上传软件包

2.配置文件
[root@localhost ~]# cp -r frp_0.33.0_linux_amd64 /usr/local/frp/
[root@localhost ~]# cd /usr/local/frp/
[common]
server_addr = 192.168.1.40
server_port = 7000
token = aaa123

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 6001

3.启动测试

1.浏览器查看服务器上连接的客户端数量

2.启动测试

如果希望后台运行,请添加nohub和&

服务器启动:

客户端启动:

2.MySQL安装

安装MySQL步骤------看这里

官网下载地址:

MySQL :: MySQL Community Downloads

[root@master-mysql ~]# mysql -P3306 -pQing_tang999
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.33 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.01 sec)

mysql> create user 'abc'@'%' identified by 'abc';
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on test.* to 'abc'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

 

3.python3的安装使用

在frp的客户端安装python3

[root@localhost ~]# yum -y install python3
[root@localhost ~]# python3 --version
[root@localhost ~]# python3
Python 3.6.8 (default, Nov 14 2023, 16:29:52) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

4.python管理MySQL

1.pip

设置清华镜像站(从国内下载安装包,提高下载和安装速度)

pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

 2.pandas

安装pandas数据分析工具(pandas是知名的数据分析工具, pandas有完整的读取数据的工具,以及DateFrame数据框架,用于保存从数据库中读取的数据)

[root@localhost ~]# pip install pandas

3.pymysql

安装pymysql连接器(oracle为开发者提供的python管理mysql 的工具,通过这个工具,就恶意在不替原有代码的情况下,应对数据库软件的升级)

[root@localhost ~]# pip install pymysql

 4.python管理MySQL

1.查看安装的工具并起别名

>>> pymysql
<module 'pymysql' from '/usr/local/lib/python3.6/site-packages/pymysql/__init__.py'>
>>> pandas
<module 'pandas' from '/usr/local/lib64/python3.6/site-packages/pandas/__init__.py'>
>>> import pymysql as pm
>>> import pandas as pd
>>> pm
<module 'pymysql' from '/usr/local/lib/python3.6/site-packages/pymysql/__init__.py'>
>>> pd
<module 'pandas' from '/usr/local/lib64/python3.6/site-packages/pandas/__init__.py'>
>>> 

由于自己做的MySQL服务器连接出问题了,所以使用了其他的MySQL服务器

2.连接MySQL

>>> conn=pm.connect(
... host='123.249.27.70',   #mysql服务器地址
... user='abcd',            #mysql用户
... password='abcd',        #用户密码
... database='test',        #数据库名称
... port=6001);             #frp客户端使用的端口
>>> conn
<pymysql.connections.Connection object at 0x7f3b41c47ba8>
>>> 

 3.游标---当前读取数据的位置

>>> cursor=conn.cursor()
>>> cursor
<pymysql.cursors.Cursor object at 0x7f3b4d0c6e10>

4.查看数据表

>>> sql="select * from student"
>>> sql
'select * from student'
>>> cursor.execute(sql)
5        #有五行数据

5. 查看数据表的内容,以元组显示


>>> cursor.fetchall()
((1, '章三', '男'), (2, '李四', '女'), (3, '小凤仙', '女'), (4, '章丘铁锅', '男'), (6, '孙颖莎', '女'))

6. 获得数据表的表头

>>> cursor.description
(('id', 3, None, 11, 11, 0, False), ('name', 253, None, 180, 180, 0, False), ('gender', 253, None, 16, 16, 0, False))

7.整理展示---将这些数据放到pandas里,数据会以格子形式显示

>>> head=[]
>>> desc=cursor.description
>>> for var in desc:
...     print(var[0])
... 
id
name
gender
>>> for var in desc:
...     head.append(var[0])
... 
>>> head
['id', 'name', 'gender']
>>> pd.DataFrame(cursor.fetchall)
KeyboardInterrupt
>>> cursor.fetchall()
()
>>> cursor.execute(sql)
5
>>> res=cursor.fetchall(sql)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: fetchall() takes 1 positional argument but 2 were given
>>> res=cursor.fetchall()
>>> res
((1, '章三', '男'), (2, '李四', '女'), (3, '小凤仙', '女'), (4, '章丘铁锅', '男'), (6, '孙颖莎', '女'))
>>> pd.DataFrame(data=res,columns=head)
   id  name gender
0   1    章三      男
1   2    李四      女
2   3   小凤仙      女
3   4  章丘铁锅      男
4   6   孙颖莎      女

 8.使用python文件管理MySQL

[root@localhost ~]# python3 python-mysql.py 
import pymysql as pm
import pandas

class Python_Mysql_01(object):

        def __init__(self):
                print("test")

        def getConn(self):
                conn=pm.connect(
                        host='123.249.27.70',
                        user='abcd',
                        password='abcd',
                        database='test',
                        port=6001
                )
                print(conn)
                return conn
        def getRes(self,cursor,sql):
                cursor.execute(sql)

                #获得查询的数据
                data=cursor.fetchall()

                #表头
                head=[item[0] for item in cursor.description]

                #组成pandas数据框DataFram
                return pandas.DataFrame(data=data,columns=head)

if __name__=="__main__":
        #初始化Python_Mysql_01类,创建实例pmp
        pmp=Python_Mysql_01()
        #获得conn
        conn=pmp.getConn()

        #获得游标
        cursor=conn.cursor()

        df=pmp.getRes(cursor,"select * from student")
        print(df)

[root@localhost ~]# python3 python-mysql.py 
test
<pymysql.connections.Connection object at 0x7f4db1881828>
   id  name gender
0   1    章三      男
1   2    李四      女
2   3   小凤仙      女
3   4  章丘铁锅      男
4   6   孙颖莎      女

总结:

1.和shell脚本一样,python文件也可称为py脚本,也是将python指令做一个集合

2.为了脚本更加智能化和自动化,添加选择语句(智能化)和循环语句(自动化)

3.同时为了开发效率和可读性做了方法、类、模块

5.其他用法

1. python脚本完成并配置成功之后,将脚本部署为一个二进制的 可执行文件;

2. 因为py文件要被执行需要在linux中安装python环境,但是二进制可执行文件,不要环境,在任何linux主机上都可以执行。

3. 步骤

1. 安装pyinstaller  
pip3 install pyinstaller

2. 使⽤pyinstaller⽣成可执⾏⽂件    
pyinstaller --onefile xxx.py
# py⽂件中必须是有 if __name__=="__main__":

python模块 发布web服务

python3 -m http.server 9971

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Axure 变量魔法:揭秘局部与全局的动态协同

前言 在 Axure 的世界中&#xff0c;变量是连接设计者意图与用户行为的桥梁。 局部变量&#xff0c;以其独特的灵活性和针对性&#xff0c;允许我们在特定情境下快速响应用户的操作。 而全局变量&#xff0c;则以其广泛的覆盖范围&#xff0c;为跨页面的一致性和连贯性提供了…

003集——C#数据类型 及大小端序转换——C#学习笔记

如需得到一个类型或一个变量在特定平台上的准确尺寸&#xff0c;可以使用 sizeof 方法。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。下面举例获取任何机器上 int 类型的存储尺寸&#xff1a; using System;namespace DataTypeApplication {class Program{…

第26课 Scratch入门篇:乘坐公交车

乘坐公交车 故事背景&#xff1a; 又是一天结束了&#xff0c;在繁忙的城市里&#xff0c;深夜加班的上班族们挤上最后一班公交车&#xff0c;回到自己温馨的家 程序原理&#xff1a; 这节课最大的难度就是角色的设计以及角色的切换&#xff0c;背景的不停移动其实跟“猫咪跑…

论MATLAB强大的容错性

如何看待“低代码”开发平台的兴起&#xff1f; “低代码”让非专业人士也能快速构建应用程序。这种新兴技术正在挑战传统软件开发模式&#xff0c;引发了IT行业的广泛讨论。低代码平台是提高效率的利器&#xff0c;还是降低了编程门槛导致质量下降&#xff1f;它会改变开发者…

【报错解决】MySQL报错:sql_mode=only_full_group_by

文章目录 报错信息DataGrip 报错还原Navicat 报错还原 报错原因解决方案查看当前 sql mode方案一&#xff1a;临时解决方案二&#xff1a;永久解决方案三&#xff1a;使用 any_value() 或 group_concat()方案四&#xff1a;调整实现思路&#xff0c;避开 GROUP BY 使用 我是一名…

赛博朋克未来的第一个创想,低空飞行走近现实

英特尔创始人Andy Grove曾在《Only the Paranoid Survive》&#xff08;只有偏执狂才能生存&#xff09;这本书中提到一个观点&#xff1a;战略拐点往往发生在一个竞争因素&#xff0c;或者多个竞争因素突然变成原来10倍的时候&#xff0c;这时候往往预示着生意本质已经发生改变…

基于大数据的气象数据分析与可视化系统设计与实现【爬虫海量数据,LSTM预测】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍研究目的研究意义研究思路可视化展示每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 本课题主要针对气象数据进行分析以及可视化…

【CPP】slt-list由认识到简化模拟实现深度理解~

关于我&#xff1a; 睡觉待开机&#xff1a;个人主页 个人专栏: 《优选算法》《C语言》《CPP》 生活的理想&#xff0c;就是为了理想的生活! 作者留言 PDF版免费提供&#xff1a;倘若有需要&#xff0c;想拿我写的博客进行学习和交流&#xff0c;可以私信我将免费提供PDF版。…

大数据信用报告查询哪家平台的比较好?

相信在搜索大数据信用的你&#xff0c;已经因为大数据信用不好受到了挫折&#xff0c;想详细了解一下自己的大数据信用&#xff0c;但是找遍了网络上的平台之后才发现&#xff0c;很多平台都只提供查询服务&#xff0c;想要找一个专业的平台查询和讲解很困难。下面本文就为大家…

【MongoDB】2.MongoDB导入文件

目录 一、MongoDB Compass 二、mongoimport 1、安装 2、语法&#xff1a; 3、可能出现的错误 三、MongoDB的GridFS 1、介绍 2、语法 一、MongoDB Compass 这个简单&#xff0c;不做赘述 二、mongoimport Mongoimport是一个用于导入数据到MongoDB的工具&#xff0c;默…

IWDG 溢出时间计算

iwdg看门狗溢出时间&#xff0c;就是之前算过的&#xff0c;但是再记录一次 计算过程如下&#xff1a;因为iwdg是独立看门狗&#xff0c;是用的LSI, 所以在f1系列lsi的时钟频率是40khz&#xff0c;也就是Fiwdg的频率是40khz&#xff0c;频率除以psc&#xff08;分频系数&#…

计算机毕业设计 校园志愿者管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

C++ | Leetcode C++题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isValidSerialization(string preorder) {int n preorder.length();int i 0;int slots 1;while (i < n) {if (slots 0) {return false;}if (preorder[i] ,) {i;} else if (preorder[i] #){slots--;i…

全面介绍 Apache Doris 数据灾备恢复机制及使用示例

引言 Apache Doris 作为一款 OLAP 实时数据仓库&#xff0c;在越来越多的中大型企业中逐步占据着主数仓这样的重要位置&#xff0c;主数仓不同于 OLAP 查询引擎的场景定位&#xff0c;对于数据的灾备恢复机制有比较高的要求&#xff0c;本篇就让我们全面的介绍和示范如何利用这…

红黑树的插入与删除

文章目录 红黑树概念红黑树的性质&#xff1a; 红黑树的插入操作情况一情况二情况三 小总结红黑树的验证红黑树的删除一.删除单孩子节点1. 删除节点颜色为黑色2. 删除颜色为红色 二. 删除叶子节点1. 删除节点为红色2.删除节点为黑色2.1兄弟节点为黑色&#xff0c;有孩子节点&am…

window下redis的安装

下载地址&#xff1a;https://github.com/tporadowski/redis/releases Windows下的.msi安装和.zip格式区别&#xff1a; .msi是Windows installer开发出来的程序安装文件&#xff0c;它可以让你安装&#xff0c;修改&#xff0c;卸载你所安装的程序。说白了.msi就是Windows in…

KeyFreeze 1.0.1.0 临时禁用电脑鼠标和键盘

KeyFreeze 是一个免费实用的临时禁用电脑鼠标和键盘的软件&#xff1b;软件支持 Windows 。 它完全免费&#xff0c;体积非常小巧&#xff0c;使用场景是当你在某些时候需要临时禁用鼠标和键盘&#xff0c;让鼠标和键盘无法使用&#xff0c;防止误触。 开软件只有一个按钮&am…

stm32入门-----硬件SPI读写W25Q64

目录 前言 一、相关库函数介绍 1.初始化 2.写入数据 3.接收数据 4.获取标志位 二、软件SPI读写W25Q64 前言 上一期我们学习了stm32的SPI外设&#xff08;上一期链接&#xff1a;stm32入门-----硬件SPI外设-CSDN博客&#xff09;&#xff0c;那么我们本期就来…

最近很火的FLUX.1文生图模型本地一键整合包SwarmUI,schnell量化版,6G显存可畅玩的FLUX.1

最近一个新的文生图模型突然火出圈&#xff0c;它就是由Black Forest Labs&#xff08;黑森林实验室&#xff09;团队开发的FLUX.1。 Black Forest Labs估计很多人都没听说过&#xff0c;还以为是新生的创业团队&#xff0c;现在就先来说一说Black Forest Labs。玩过AI绘画的&a…

【Ansible 学习之旅】Ansible 介绍和架构

目录 Ansible 发展Ansible 介绍Ansible 组成 Ansible 发展 2012-03-09&#xff0c;发布0.0.1版 2015-10-17&#xff0c;Red Hat宣布1.5亿美元收购 官网&#xff1a;https://www.ansible.com/ 官方文档&#xff1a;https://docs.ansible.com/ Ansible 介绍 Ansible 可自动管理…