SQL跨数据库访问linux或windows的mysql和定时作业
2010-08-28 17:21 夜雨瞳 阅读(1833) 评论(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#)实现数据库远程访问原因,一方面如果程序端改动,需要增大程序端的维护和编写;
另一方面,进行数据库和数据库之间的访问,也解决了数据库数据共享的一致性。