简介
机械电子工程二年级学生,首先最初是想搭建自己的博客还有想在云端建立自己的云数据库,对sqlserver有了解,想着能不能也在云端也建立一个数据,然后了解到了阿里云的ECS服务器,刚好看到有活动可以免费体验就尝试看看。
阿里云的有很多教程(视频、图文),我最初就是在云服务器ECS的控制台的概览发现了【搭建云上博客】的图文教程,然后就跟着教程开始做。
一些问题与解决
1.起初第一遍的时候就在验证Apache服务是否安装成功的时候,输入公网IP没有反应,后来才发现ECS的端口没有开启。
2.第二次就是在安装MySQL数据库的时候,密码我设置的是123456789,然后WordPress就一直连接不上数据库,这个问题我找了很久,最后才发现MySQL数据的密码与wp-config.php中的password_here保存的密码不一样,才导致了连接不上。
3.安装MySQL数据库时会报错误:
Public key for mysql-community-server-5.7.37-1.el7.x86_64.rpm is not installed
后来经过我百度找到了原因:(这个问题也是困扰了我好久,数据库也重新装了)
报错的原因是MySql的GPG升级了,需要重新获取,使用以下命令即可:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再执行:
yum install mysql-server
4.最重要的一点就是不要随便去修改wp-confing.php的文件,会导致WordPress博客访问不了。
5.在ECS安装了MySQL之后,我尝试想用C#写一个客户端去访问ECS服务器的MySQL,当我开始测试的时候,发现连接不上,我检查了数据库连接字符串并没有发现问题,后来我了解到SSH,我以为要先通过SSH来连接到ECS,然后再去访问MySQL数据库,然后我就去学习C#有关于SSH的知识,经过一段时间之后我成功连接到了ECS,也能后访问MySQL,但是我觉得这样也太麻烦了,后来我去提交了工单,问了技术,才知道原来不需要这么复杂,用SSH连接ECS用的是22端口,而我想要直接连接MySQL可以直接通过3306端口访问(恍然大悟),因为MySQL数据库是默认开启3306端口的。了解了这些之后我修改了C#代码,又加入了插入数据的功能,正当我以为正常的时候,发现插入中文的时候会乱码,又是一顿百度,才了解创建数据库是用的编码不对,建议是改成gb2312,到这里我才是差不多完成了这件事。
这里我建议遇到问题还是先问一下客服,不然真的会绕很大一个圈。
收获总结
如今社会是技术快速发展的社会,在除自己的专业外,要或多或少的掌握一些其他的知识技能,而且现在的互联网也非常发达,资源很多,自己的一个想法能够很快的得到实现,一些问题也能够很快的得到解答,我个人是非常喜欢拓展自己的一些技能的。
说回阿里云,首先我觉得阿里云这种可以免费体验云开发的一些实验和活动,很好的推进了大量在校大学生的兴趣和想法,并且得到实践。
在经过几天的学习,我了解到了很多新知识,当然我要学的也有很多,我希望在未来我依然可以通过阿里云来实现我自己的一些想法。
【客户端代码】用MySql做C#客户端的数据库
1.数据库创建
1.MySql创建oranges_plan数据库
create database oranges_plan;
2.创建oranges表
CREATE TABLE `oranges` ( `id` int(11) NOT NULL AUTO_INCREMENT, `password` varchar(255) DEFAULT NULL, `account_number` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `phone` varchar(255) DEFAULT NULL, `question` varchar(255) DEFAULT NULL, `answer` varchar(255) DEFAULT NULL, `remark` varchar(255) DEFAULT NULL, `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gb2312;
2.ECS安全组开放3306端口
C#客户端程序就是通过3306端口访问MySql数据库的
3.C#客户端程序编写
1.App.config
<?xmlversion="1.0"encoding="utf-8"?><configuration><startup><supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.6"/></startup><connectionStrings><addname="connString"connectionString="server=公网IP;User Id=root;password=密码;Database=oranges_plan;charset=gb2312"/></connectionStrings></configuration>
2.MysqlConnectServer.cs
usingSystem; usingSystem.Collections.Generic; usingSystem.Configuration; usingSystem.Data; usingSystem.Data.SqlClient; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; usingDAL; usingMySql.Data.MySqlClient; namespacealiyunSqlconnectTest{ internalclassMysqlConnectServer { privatestaticreadonlystringconnString=ConfigurationManager.ConnectionStrings["connString"].ToString(); publicstaticDataSetGetDataSet(stringsql) { MySqlConnectionconn=newMySqlConnection(connString); MySqlCommandcmd=newMySqlCommand(sql, conn); MySqlDataAdapterda=newMySqlDataAdapter(cmd);//创建数据适配器对象DataSetds=newDataSet();//创建一个内存数据集try { conn.Open(); da.Fill(ds);//使用数据适配器填充数据集returnds; } catch (Exceptionex) { //将错误信息写入日志...throwex; } finally { conn.Close(); } } publicstaticDataSetGetdata() { stringsql="select * from oranges"; returnGetDataSet(sql); } } }
3.Form1.cs
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; usingSystem.Windows.Forms; usingMySql.Data.MySqlClient; usingRenci.SshNet; usingstaticSystem.Windows.Forms.VisualStyles.VisualStyleElement; usingDAL; usingRenci.SshNet.Common; usingSystem.IO; usingSystem.Threading; usingSystem.Reflection.Emit; namespacealiyunSqlconnectTest{ publicpartialclassForm1 : Form { publicForm1() { Control.CheckForIllegalCrossThreadCalls=false; //加载时 取消跨线程检查InitializeComponent(); } stringserver="8.130.33.238"; stringusername="root"; stringpassword="=T&ey]bVqt3V^$7x"; publicdelegatevoidGetSSHLog(stringlog); publicstaticeventGetSSHLoggetSSHLog; publicdelegatevoidStartThreadDelegate(); publicstaticStartThreadDelegatestd; privatevoidForm1_Load(objectsender, EventArgse) { //Form1.getSSHLog += SSHClass_getSSHLog;//dataGridView1.DataSource = MysqlConnectServer.Getdata().Tables[0];//timer1.Start();getdata(); } privatevoidbtn_ConnectMySql_Click(objectsender, EventArgse) { stringconnectionSql="server=8.130.33.238;User Id=root;password=NewPassWord1.;Database=oranges_plan;charset=gb2312"; stringsql="INSERT INTO oranges (password) VALUE ('{0}')"; stringsql2=string.Format(sql, textBox3.Text); MySqlConnectionmySqlConnection=newMySqlConnection(connectionSql); mySqlConnection.Open(); MySqlCommandmySqlCommand=newMySqlCommand(sql2, mySqlConnection); if (mySqlCommand.ExecuteNonQuery() >0) { //MessageBox.Show("数据插入成功!!"); } mySqlConnection.Close(); dataGridView1.DataSource=MysqlConnectServer.Getdata().Tables[0]; this.dataGridView1.FirstDisplayedScrollingRowIndex=this.dataGridView1.Rows.Count-1; textBox3.Text=""; } //dpublicvoidKeepDataConnect() { dataGridView1.DataSource=MysqlConnectServer.Getdata().Tables[0]; } privatevoidbutton2_Click(objectsender, EventArgse) { if (bol) { getdata(); } } //dprivatevoidForm1_FormClosing(objectsender, FormClosingEventArgse) { } privateThreadth; privateboolbol=true; privatevoidgetdata() { th=newThread(newThreadStart(StartData)); th.IsBackground=true; th.Start(); } privatedelegatevoidInvokeHandler(); privatevoidStartData() { try { while (true) { if (this.IsHandleCreated) { //dataGridView1.BeginInvoke(new ThreadStart(delegate()// {// dataGridView1.DataSource = DBHelper.ExcuteDataTable(sql);// data.dategirds(dataGridView1);// }));BeginInvoke(newAction(() =>dataGridView1.DataSource=MysqlConnectServer.Getdata().Tables[0])); this.dataGridView1.FirstDisplayedScrollingRowIndex=this.dataGridView1.Rows.Count-1; } Thread.Sleep(1000); } } catch { return; } } privatevoidbutton4_Click(objectsender, EventArgse) { for (inti=0; i<10000; i++) { DataGridViewRowdr=newDataGridViewRow(); dr.CreateCells(dataGridView1); dr.Cells[0].Value=i.ToString(); //dataGridView1.Rows.Insert(i, dr);dataGridView1.Rows.Add(dr); } } privatevoidbutton5_Click(objectsender, EventArgse) { dataGridView1.Rows.Clear(); } } }