代码改变世界

SQL跨数据库访问linux或windows的mysql和定时作业

2010-08-28 17:21  夜雨瞳  阅读(1825)  评论(2编辑  收藏  举报

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

大致有2种方法:

第一种在ODBC配置好ODBC的数据源,然后与SQL链接服务器结合(SQL链接服务器不需要填写访问接口字符串

第二种在SQL链接服务器直接配置好ODBC的Driver字符串。

这里主要介绍第一种(第二种在‘访问接口字符串’加上字符串即可)

 

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

  2.1、分配权限(linux和win7)

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

      GRANTALLPRIVILEGESON*.*TO'Lucy'@'192.168.1.101' IDENTIFIED BY'123'WITHGRANTOPTION;

  2.2、打开3306端口

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

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

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

        =>给个名称,如:mysqlinput

    2.2.2、在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、配置ODBC

  3.1、控制面板=>管理工具=>数据源(ODBC)=>系统DSN

  

  选测试Test一下,连接到对方mysql数据库成功,所以才可以显示information_schema,mysql,mysql...这些数据库,这里选择test。

  3.2、数据源是ZYF,则ODBC为以下情况

  

 

4、创建链接服务器

    

  4.1、因为在ODBC建立的数据源(data source name)是ZYF,所以这里是ZYF

(拓展一:如果你不想定义ODBC,可以在‘访问接口字符串’直接通过加上以下字符串:

DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.168.1.100;PORT=3306;DATABASE=information_schema;USER=root;PASSWORD=123;STMT=set  names  utf8

但是这里不用加,因为你已经定义了一个ODBC了。

拓展二:如果你不想定义一个ODBC,也不想通过链接服务器。当然也可以直接用字符串执行:

SELECT * FROM OPENROWSET('MSDASQL', 'DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.168.1.101;PORT=3306;DATABASE=information_schema;USER=Lucy;PASSWORD=123;STMT=set  names  utf8', 'select * from CHARACTER_SETS')

  4.2、测试一下。

  执行select * from OPENQUERY (CONNECTMYSQL,'select * from a');

  

 

5、建立定时作业

常规=>步骤=>计划

步骤中:

 

6、运行效果:

 

7、总结:

SQL数据库远程访问MySQL数据和定时作业,主要是为了不同数据库开发,为了达到不同数据库资料共享性而操作的(达到如果一个企业要用2款软件,如一款在财务上突出优势,另一款在生产流水线突出优势,数据库如果是SQL和MySQL。这时可通过定时作业来实现数据上的一致性)

(在上一篇中)不用程序端(C#)实现数据库远程访问原因,一方面如果程序端改动,需要增大程序端的维护和编写;

另一方面,进行数据库和数据库之间的访问,也解决了数据库数据共享的一致性。