云服务器外网访问MySql全程实录(包括云服务器上MySql的安装和部署)

xiaoxiao2021-02-28  9

1.云服务器申请

最近在给一个小企业做个报价系统,C#WPF框架开发,桌面程序。由于用户可能经常出差,更换电脑,因此考虑将程序的数据库放到外网服务器上,每次程序使用需要登录验证,有点类似QQ的方法。这里有人说为什么不直接做成web,桌面应用已经落伍了。确实如此,原因主要是这个企业的报价系统的前端交互太多,一堆的javascript代码,还有一堆的word报表输入输出,做成web太过麻烦。因此还是决定做成桌面应用程序。由于访问量和并发性并不大,因此考虑性能一般的云服务器就可以了。

下面是我购买的云服务器基本信息:操作系统是windows server 2012 R2  64位中文版(我是小白,还是喜欢在windows下面捣鼓捣鼓,感觉简单实惠,大牛看不过去的忍忍吧)

云服务器我喜欢采用远程登录界面的方式,登录后和操作普通的windows电脑基本没区别。可以完全把这台电脑想象成你手头的笔记本电脑,唯一的区别在于这台电脑有一个公共的外网IP。想要上传文件什么的直接在本地电脑和服务器上copy文件就可以,相当简单方便,并且云服务器也可以直接装软件,和普通电脑没什么区别。

2.服务器上MySql安装与基本使用

(1)下载MySql

下载网址:点击打开链接

我建议下载早期的版本,晚点的版本好像配置的时候找不到My-default.ini,后面配置不是很好弄。我下载的版本是MySql 5.6.40  win64。为了方便大家下面给出一个我使用的版本,下面是链接。

点击打开链接

下载后需要修改my.ini文件。直接在官网下载后期MySql的人按照其他人的教程可能需要找到MyDefault.ini文件,但是后期版本里面是没有这个文件的,虽然我也参考了一些教程,但是感觉有点麻烦,所以我还是用了早起的5.6.40版本。

接下来,我把整个文件夹解压后放到云服务器C盘下面的toolplace文件夹下面。如果你放在了其他位置,需要修改my.ini文件里面的basedir和datadir目录,注意这里凡是用\路径的都要用\\,修改完保存即可。

(2)修改系统变量

windows下面修改系统环境变量(不会的自己网上百度下如何修改环境变量),在path里面添加";C:\toolplace\mysql-5.6.40-winx64\bin"   这里注意前面的分号,用来跟其他环境变量分隔开。

修改系统环境变量主要是为了方便使用MySql命令,如果不这么干的话,需要cd一直到bin文件夹下面,才能使用相关MySql命令。

 

(3)MySql安装、启动和修改密码

点击开始菜单,搜索框输入cmd,然后右键以管理员身份运行,输入 :

mysqld install

回车后会英文提示安装成功。

然后输入启动命令:

 

net start mysql

可以看到启动成功了。若要关闭mysql服务,使用下面的命令:

 

net stop mysql

在服务启动的状态下,需要登录MySql,才能继续操作数据库,登录命令如下:

 

mysql -u root -p

这里会提示输入密码,直接回车就可以。(因为刚装完默认情况下没有密码),但是我们实际情况下需要设置密码,设置方式如下,首先退出当前账户,退出命令:

exit

这里设置新密码的命令:

mysqladmin -u root -p password 123456

按回车即可。123456即为你想要设置的密码,然后会提示输入密码,把123456再填一遍,这样的话就修改成功了。

然后用

mysql -u root -p

登陆,接着输入刚才的密码即可。进入后可以在Mysql编辑状态下输入  

show databases;

再按回车即可看到下图显示的部分已由的数据库。上面的命令注意   最后的分号也是需要输入的

至此,已经在云服务器上安装完MySql了。

 

3.服务器上Navicat安装与基本使用

在命令行下面进行数据库操作是完全可以的,但是对于不熟悉命令行的人来说可能不是很方便。这里我们采用Navicat来连接,管理、测试数据库状态。Navicat的安装这里不再重复叙述,可以网上自行百度。这里为了方便,同样给出破解版的下载地址:点击打开链接

下载后解压copy到云服务器上,不需要安装,直接运行即可。

 

先创建MySql连接,随便输入一个连接名,输入刚才MySql数据库密码,点击确认,即可查看MySql里面的数据库。关于如何使用Navicat操作数据库,这里不再过多介绍,比较简单。

 

4.MySql修改外网访问权限

为了使得云服务器上的MySql可以给外网进行访问,我们这里用cmd然后输入

mysql -u root -p

再输入密码重新登录MySql

输入

use mysql;

进入mysql数据库,然后更改root用户权限:

UPDATE user SET host = '%' WHERE host = '127.0.0.1';

这样,所有用户这样一来所有IP地址均可以作为root用户,可以使用SELECT host,user FROM user查询当前用户表。 对所有root用户授权: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 这里“123456”为MySql密码,也可以对指定IP的用户授权: GRANT ALL PRIVILEGES ON *.* TO 'root'@'指定的IP' IDENTIFIED BY '123456' WITH GRANT OPTION; 然后重载授权表: FLUSH PRIVILEGES; 至此,就配置好MySql的外网访问权限了。

 

4.测试MySql外网访问

在本地电脑上安装Navicat,然后按照上述方法进行数据库连接,在填写主机名和IP地址的时候选择云服务器的外网IP即可。

 

 

后记

后来发现C#程序有时候外网访问MySql有点慢,导致timeout异常,找到如下解决办法

在my.ini文件里面添加如下内容,禁止掉DNS解析,跳过权限表可以明显加快速速[mysqld]skip-name-resolve 

skip-grant-tables

 

 

另外,按照上述配置,偶尔会产生下列错误,尤其在网速有点卡的时候尤其明显

 

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

通过查找资料,网上说是MySql的connect_timeout默认为5,即5秒内没响应就会报错,因此,这里在my.ini文件里加上这句话

connect_timeout = 120

 

最后补充(重要):采用上述方式试行了半年,可以实现远程访问,但是在使用过程中出现了黑客攻击的问题,黑客会针对这种开放权限的MySql数据库进行攻击,即使将密码设置了很长都没有用,黑客依然能攻击成功并且删除数据库所有信息(比特币勒索)。后来我不再采用这种模式了,改成利用Django做了一个简单的后端,利用rest api形式提供对外的接口,详细方法可以参考我的其它博客。

 

转载请注明原文地址: https://www.6miu.com/read-2000127.html

最新回复(0)