免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1319 | 回复: 0
打印 上一主题 下一主题

C#远程访问linux(ubuntu)或windows的mysql数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览

1、远程访问数据库大概模型

2、mysql在win7、linux上如何设置:

  2.1、分配权限(linux和win7)

  进行mysql命令行,进行分配权限、执行:

GRANT ALL PRIVILEGES ON *.* TO 'Lucy'@'192.168.1.102' IDENTIFIED BY '123' WITH GRANT OPTION;

      ALL PRIVILEGES分配所有的权限,如Select、Insert、Delete、Update、Drop、Create等等

  *.*是 数据库.数据库中的表

  'Lucy'是远程机子要访问本计算机的所需要的用户名(这个由mysql分配用户给远程机子,当然,             还要通过一下步的3306端口)    

  '192.168.1.102'是远程机子的IP地址(这个由mysql指定远程机子哪个IP地址可以让访问)

  '123'是远程机子知道了用户,需要访问的用户密码(这个也是由mysql分配密码给远程机子)

  所以也可以归纳为:

   GRANT ALL PRIVILEGES ON 数据库.数据库表 TO '远程机用户名'@'远程机IP' IDENTIFIED BY '远程机用户密码' WITH GRANT OPTION;

   2.2、打开3306端口

  2.2.1、为什么要打开3306端口?

   因为防火墙问题,例如:

   IIS配置ASP后,局域网的机子不能访问本机的网页(如果默认端口是80),而关掉防火墙就可以。是因为你的80端口没有打开。

   而mysql的默认端口3306是默认没有打开的

  2.2.2、为什么我们远程访问SQL的时候,不用打开端口?

   因为SQL的端口是默认打开的,而你远程访问SQL数据库的时候,只要知道它的用户名、密码、端口号1433就行了。

  2.2.3、如何打开mysql的端口

  2.2.4、在win7上,只要在‘入站规则’上建立一个3306端口即可。

   控制面板=>管理工具=>高级安全的Windows防火墙=>入站规则

   然后新建规则=>选择‘端口’=>在‘特定本地端口’上输入一个‘3306’=>选择‘允许连接’=>选择‘域’、‘专用’、‘公用’=>给个名称,如:mysqlinput

        


     2.2.5、在linux的ubuntu上,对mysql的配置文件进行配置均可。

   按F3(打开命令行)=>输入"sudo vi /etc/mysql/my.cnf"(用vim打开)=> 

# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

bind-address = 127.0.0.1

   注释掉bind-address均可,即#bind-address = 127.0.0.1,表示允许通过远程端口3306访问。

   =>重启mysql,即在命令行输入"sudo /etc/init.d/mysql restart"

3、客户端(win7或ubuntu下载 MySQL ODBC 3.51 Driver,因为在ubuntu上有人用Mono搞C#,所以ubuntu也提进去)

  可以到http://dev.mysql.com/downloads/connector/odbc/3.51.html下载,安装在此不多说了。

  安装完后,在win7下怎么看你有了MySQL ODBC 3.51 Driver这个驱动程序呢?(Mono我就帮不了忙了,因为我没有使用过)

  控制面板=>管理工具=>数据源(ODBC)=>驱动程序

 

4、C#方面

  这里就简单写一个对方存在的数据库(information_schema是默认存在的),这里用的是C#.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;
using System.Data.Odbc;

namespace Help
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strconn = "Driver={MySQL ODBC 3.51 Driver};Server=192.168.1.102;Database=information_schema;User=Lucy; Password=123;Option=3;chartset=utf8";
string sql = "select * from CHARACTER_SETS";
OdbcConnection myConnection
= new OdbcConnection(strconn);
OdbcCommand myCommand
= new OdbcCommand(sql, myConnection);
myConnection.Open();

//DropDownList1.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
//DropDownList1.DataTextField = "name";
//DropDownList1.DataValueField = "id";
//DropDownList1.DataBind();
OdbcDataAdapter sda = new OdbcDataAdapter();
sda.SelectCommand
= myCommand;
DataSet ds
= new DataSet();
sda.Fill(ds);
GridView1.DataSource
= ds;
GridView1.DataBind();

myConnection.Close();
}
}
}

5、远程访问后,运行效果:

 

6、总结

  6.1、操作系统上大部分有一些共性,其操作思想是可以移植的。

  6.2、如何看懂相应的配置文件说明是很重要的。

  6.3、命令行多少也得学一些。至少打开‘服务’的时候,输入services.msc,就可以打开服务了。

  6.4、抽象出自己可理解和实际相结合的模型是挺重要的。

  6.5、(举一反三)是不是只有C#行呢?VB、Java这些不行吗?那linxu下ruby、php去访问windows的SQL呢?具体情况,就只有实践能证明了。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP