【MySQL】跨服务器访问数据(Windows版)

原创 2015年11月18日 00:55:43

1. 简介

  mysql 提供了一个类似Oracle中的数据库链接(DBLINK)功能的存储引擎–FEDERATED。当我们创建一个以FEDERATED为存储引擎的表时,服务器在数据库目录只创建一个表定义文件。文件由表的名字开始,并有一个frm扩展名。无其它文件被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。
  对本地的Federated存储表操作增删改,实际上这些命令都被发到主服务器上的数据库执行,本地的Federated存储表会映射最新的远程数据;

2. 安装Federated

1) 进入cmd命令行下, 切换到mysql安装文件夹的bin目录

mysql -uroot -p

输入密码后进行mysql;
2) 查看mysql是否启动federated支持;如果为yes就是已启用,不用再配置其他东西,可直接建立federate存储表;

3)修改my.ini文件
  强调不是my-default.ini文件;my.ini是在mysql data文件夹下(不是在mysql install文件夹下);

my.ini位置

  方法2,cmd下查找my.ini

show variables like 'datadir'

  然后,在文件中只需添加一个单词,注意位置;

4)重启mysql, show engines; 会发现federated那一行是YES。

3. 建立federated存储表

3.1 了解federated存储表

3.1.1 FEDERATED存储引擎的局限性

  • FEDERATED表指向的远程表在你通过FEDERATED表访问它之前必须存在。
  • 一个FEDERATED表指向另一个FEDERATED表是可能的,但是你必须小心不要创建一个循环。
  • 没有对事务的支持。
  • 如果远程表已经改变,对FEDERATED引擎而言是没有办法知道的。这个的原因是因为这个表必须象数据文件一样工作,除了数据库其它任何都不会被写入。如果有任何对远程数据库的改变,本地表中数据的完整性可能会被破坏。
  • FEDERATED存储引擎支持SELECT, INSERT, UPDATE, DELETE和索引。它不支持ALTER TABLE, DROP TABLE或任何其它的数据定义语言语句。当前的实现不使用预先准备好的语句。
  • 执行使用SELECT, INSERT, UPDATE和DELETE,但不用HANDLER。
  • FEDERATED表不能对查询缓存不起作用。
  • 这些限制中的一些在FEDERATED处理机的将来版本可能被消除。

3.2 远程服务器上的mysql数据库结构

demo

DROP TABLE IF EXISTS `manage_number`;
CREATE TABLE `manage_number` (
  `increment_id` int(11) NOT NULL AUTO_INCREMENT,
  `attend_date` varchar(255) DEFAULT NULL,
  `group_id` int(11) DEFAULT NULL,
  `participant_num` int(11) DEFAULT NULL,
  `student_id` int(11) DEFAULT NULL,
  `subject` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`increment_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

3.3 本地federated存储表

demo

CREATE TABLE `manage_number` (
  `increment_id` int(11) NOT NULL AUTO_INCREMENT,
  `attend_date` varchar(255) DEFAULT NULL,
  `group_id` int(11) DEFAULT NULL,
  `participant_num` int(11) DEFAULT NULL,
  `student_id` int(11) DEFAULT NULL,
  `subject` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`increment_id`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 
CONNECTION='mysql://root:root@192.168.1.61:3306/exammanage/manage_firnumber';

加上MySQL的授权,允许别人看,但不能对主数据表进行操作,可以

> grant select on discuz.* to ted@'123.123.123.123' identified by '123456';

  上面的语句表示将 discuz 数据库的所有权限授权给 ted 这个用户,允许 ted 用户在 123.123.123.123 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456 。
  All PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

版权声明:本文为博主原创文章,未经博主允许不得转载。

MySQL数据库可以用任意ip连接访问的方法

通过CMD命令行修改数据库表的一个字段的值,实现连接,访问。 第一步、找到MYSQL软件安装所在的bin目录; (1)cd\当前目录 (2)指定MYSQL安装的bin目录 ...
  • M_M254282520
  • M_M254282520
  • 2015年04月14日 14:54
  • 5505

SQL总结之跨数据库服务器之间的数据访问(MSSQL)

跨数据服务器访问数据,有什么用呢?它主要用于不同系统间的在数据库层面的数据同步。 MSSQL可以创建对其它数据库的链接,像访问本地数据库一样访问远程数据库中对象(表、存储过程等),创建链接的方式有两种...
  • gezhonglei2007
  • gezhonglei2007
  • 2016年09月16日 17:51
  • 2844

两不同服务器上的mysql跨库查询

业务场景:关联不同数据库中的表的查询 比如说,要关联的表是:机器A上的数据库A中的表A && 机器B上的数据库B中的表B。 这种情况下,想执行“select A.id,B.id from ...
  • qq_26517369
  • qq_26517369
  • 2016年11月25日 16:59
  • 5655

MySQL实现跨服务器查询

案例 B服务器数据库进行查询时需要用到A服务器数据库表数据,需要对数据进行夸服务器查询,办法有很多,这里简单介绍下通过存储引擎层实现跨服务器查询 A服务器(192.168.1.76) B服务器(192...
  • LYK_for_dba
  • LYK_for_dba
  • 2017年10月09日 10:56
  • 568

Sql Server 数据库之间如何进行跨网远程连接访问

原文地址::http://www.cnblogs.com/xuliangxing/p/6005154.html 相关文章 1、如何远程连接数据库----https://jingyan.ba...
  • xqhrs232
  • xqhrs232
  • 2017年10月17日 13:48
  • 101

MySQL数据库跨服务器同步数据

在实际项目中经常回遇到跨服务器同步数据的问题,经查阅资料总结以下步骤(已验证): 1、环境背景: 数据库版本:5.6 操作系统:win7 64位(该方法同样适用于32位操作系统) 主服务器:192.1...
  • sdhyfxh
  • sdhyfxh
  • 2015年05月04日 15:59
  • 3656

mysql数据库跨服务器查询【需要确定mysql支持FEDERATED ,可以参照文章内容自己配置】

现有两台MYSQL数据库 一台是192.168.1.1 端口3306 上有数据库DB1 有表TABLE1 一台是192.168.1.2 端口3307 上有数据库DB2 有表TABLE2 192.168...
  • buster2014
  • buster2014
  • 2015年12月17日 16:36
  • 3593

Mysql跨服务器查询,复制

Mysql跨服务器查询 Mysql跨服务器查询  最近遇到一个问题,需要在两个服务上的两个数据库进行联表查询,本以为一两句SQL语句就能把问题解决,后来发现没有这么简单。  原因很简...
  • samxx8
  • samxx8
  • 2016年08月09日 18:00
  • 1565

使用mysql navicat跨服务器复制数据库

工具:Navicat for MySQL建立连接 依次连接两个服务器 选择需要复制的数据库进行转储SQL文件 保存到本地 在另一个服务器上,新建一个和需要复制的数据库同名的...
  • qq_26754531
  • qq_26754531
  • 2018年01月03日 17:22
  • 105

从任何主机都能访问到服务器上的MySql的方法

先要进入mysql/bin目录下 1。 改表法。 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql...
  • billluffy
  • billluffy
  • 2017年01月20日 00:38
  • 2739
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【MySQL】跨服务器访问数据(Windows版)
举报原因:
原因补充:

(最多只允许输入30个字)