【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跨服务器查询

MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK 2013-8-22 10:34| 发布者: 天空之城| 查看: 16547| 评论: 0|原作者: Sansom...

mysql 通过federated引擎 跨服务器访问数据

首先检查本地mysql数据库是否支持federated引擎, 如图所示, 执行 show engines; 如图所示: 说明不支持。 然后找到安装目录下的my.ini文件,打开编辑。 在[mysqld...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

windows下安装php、apache、mysql,并使得外网可访问内网的机器,搭建svn服务器提供版本控制

完成这些设置,花了好些时间,包括从网上搜到很多帮助的信息。这里整理一下,以防以后忘记了。 一、搭建php开发环境     1.先安装mysql,我从mysql网站下的版本是my...

Windows server 2008 R2 服务器安装 MySql 5.6.36 64位绿色版 报系统错误1067

mysql 启动服务器报错 1067 报错日志 Can't find messagefile mysql-5.6.36-winx64\share\errmsg.sys

通过WEB服务器访问MYSQL,并且数据同步到android SQLite数据库

本文出自http://blog.csdn.net/Mary881225 1、创建MYSQL数据库,并建表(如:menu表)。 2、连接数据库。 3、访问数据库        过程2、3 具体...

通过web服务器访问MYSQL数据库,使其数据同步到android SQLite数据库

通过web服务器访问MYSQL数据库有以下几个过程: 1、创建MYSQL数据库,并建表(如:menu表)。 2、连接数据库。 3、访问数据库 过程2、3 具体步骤: 1、在Myeclip...

hadoop 集群 远程访问 mysql(通过sqoop从远程数据库服务器向hdfs迁移数据) 屡次失败的原因

首先,我介绍一下我搭建的环境(win8系统上的1个VM的工作站,跑了6个centos虚拟机),6个节点,3个datanode,1个 sourcemanager 2个namenode。 设置了虚拟网络...

怎么通过web服务器访问MYSQL数据库,使其数据同步到android SQLite数据库?

通过web服务器访问MYSQL数据库有以下几个过程: 1、创建MYSQL数据库,并建表(如:menu表)。 2、连接数据库。 3、访问数据库        过程2、3 具体步骤: 1、在M...

怎么通过web服务器访问MYSQL数据库,使其数据同步到android SQLite数据库?

(  本文出自http://blog.csdn.net/Mary881225,如需转载,请注明出处)         通过web服务器访问MYSQL数据库有以下几个过程: 1、创建MYSQL数据...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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