1.服务器申请
最近在给一个小企业做个报价系统,C#WPF框架开发,桌面程序。由于用户可能经常出差,更换电脑,因此考虑将程序的数据库放到外网服务器上,每次程序使用需要登录验证,有点类似QQ的方法。这里有人说为什么不直接做成web,桌面应用已经落伍了。确实如此,原因主要是这个企业的报价系统的前端交互太多,一堆的javascript代码,还有一堆的word报表输入输出,做成web太过麻烦。因此还是决定做成桌面应用程序。由于访问量和并发性并不大,因此考虑性能一般的云服务器就可以了。
正好赶上腾讯活动,以学生价格购得腾讯云服务器,价格10元/月,50G的容量,拿来做个人的程序开发和调试比较合适(腾讯经常有活动,相比于其他的云服务,腾讯云性价比还是可以的)。购买网址:https://cloud.tencent.com/product/cvm
下面是服务器基本信息:操作系统是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
大家喜欢这篇文字,可以关注大牛编程吧!!!
原文地址:http://blog.51cto.com/13962326/2176298