mysql 提供了一个类似Oracle中的数据库链接(DBLINK)功能的存储引擎–FEDERATED。当我们创建一个以FEDERATED为存储引擎的表时,服务器在数据库目录只创建一个表定义文件。文件由表的名字开始,并有一个frm扩展名。无其它文件被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。
对本地的Federated存储表操作增删改,实际上这些命令都被发到主服务器上的数据库执行,本地的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文件夹下);
方法2,cmd下查找my.ini
show variables like 'datadir'
然后,在文件中只需添加一个单词,注意位置;
4)重启mysql, show engines; 会发现federated那一行是YES。
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;
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:[email protected]: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 等,具体权限间用“,”半角逗号分隔。