1)验证环境
源库:192.168.8.75 centos 7.5 mysql8.3
目标库:192.168.8.68 redhat 6.8 mysql5.7

2)登录源库并创建源表
$ mysql -u root -ppaasword -h 192.168.8.75
mysql> create database db_test;
mysql> use db_test;
mysql> create table t1(c1 int,c2 char(100));
mysql> insert into t1 values(1,'a');

3)登录源库创建用户并授权
$ mysql -u root -ppaasword -h 192.168.8.75
mysql> create user test@'%' identified by 'password';
mysql> grant select,insert,delete,update on db_test.t1 to test@'%';

3)目标库启用联合引擎
# vi /etc/my.cnf #添加如下行并保存
federated
# service mysqld start

4)登录目标库并创建联合表
# mysql -u root -ppassword -h 192.168.8.68
mysql> create database db_test;
mysql> use db_test;
mysql> create table f_t1(c1 int,c2 char(100))) engine=federated connection ='mysql://user_test:user_test_pwd@192.168.8.75:3306/test/t1';

5)登录目标库创建用户并授权
$ mysql -u root -ppassword -D db_test -h 192.168.8.68
mysql> create user test@'%' identified by 'password';
mysql> grant select,insert,delete,update on test.f_t1 to test;

5)登录目标库test用户测试
$ mysql -u test -ppassword -D db_test -h 192.168.8.68
mysql> select * from f_t1;
mysql> insert into f_t1 values(2,'b');
mysql> delete from f_t1 where c1=1;
mysql> update f_t1 set c2='w' where c1=2;

6)登录源库删除源表
$ mysql -u root -ppassword -D db_test -h 192.168.8.75
mysql>drop table t1;

7)登录目标端再次操作联合表
$ mysql -u user_test -ppassword -D db_test -h 192.168.8.68
mysql> select * from f_t1;
--会报错error 1430。

8)登录源库重建源表
$ mysql -u root -ppassword -D db_test -h 192.168.8.75
mysql> create table t1(c1 int,c2 char(100));
mysql> insert into t1 values(3,'cc');

9)再次登录目标库并操作联合表
$ mysql -u user_test -ppassword -D db_test -h 192.168.8.68
mysql> select * from f_t1;
mysql> insert into f_t1 values(5,'e');
--现在联合表一切恢复正常,可见源表删除并不会影响目标库中联合表的定义,重建源表即可恢复正常。

10)登录目标库创建视图
$ mysql -u user_test -ppassword -D db_test -h 192.168.8.68
mysql> create view v_f_t1 as select * from f_t1 where c1<5;
mysql> select * from v_f_t1;
--可见视图可以基于联合表创建。
mysql> insert into f_t1 values(6,'f');
mysql> select * from v_f_t1;
--可见视图可以限制用户对数据的访问范围。
mysql> insert into v_f_t1 values(7,'h');
--可见视图并不能限制用户插入数据的范围,其实,不仅针对联合表,针对常规表的视图,也是这样。
mysql> update v_f_t1 set c2='w';
--可见视图可以限制用户对数据集的更改范围,用户只能更改视图定义中允许范围的数据,哪怕update语句不带任何where条件。
mysql> delete from v_f_t1;
--可见视图可以限制用户对数据集的删除范围,用户只能删除视图定义中允许范围的数据,哪怕delete语句不带任何where条件。

mysql 联合表(federated)及视图的更多相关文章

  1. mysql 联合表查询从表即使有索引依然ALL的一个原因

    那就是主表和从表的关联字段的编码方式不一样!!! 晕啊,折腾了半天才发现,可能是不知道啥时候mysql更改主体编码方式了,结果导致后来新建的表的关联字段和之前的主表的字段的编码方式不一样 改成一样的编 ...

  2. mysql merge表介绍

    在Mysql数据库中,Mysql Merge表有点类似于视图.下面就让我们来一起了解一下Mysql Merge表都有哪些优点,希望对您能有所帮助. Mysql Merge表的优点: A: 分离静态的和 ...

  3. MySQL/MariaDB表表达式(3):视图

    视图是表表达式的一种,所以它也是虚拟表.对视图操作的时候会通过语句动态的从表中临时获取数据. 1.创建.修改视图 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED ...

  4. mysql中显示当前数据库下的所有表,包括视图。

    环境说明: mysql版本:5.5.57-log 操作系统:Red Hat Enterprise Linux Server release 6.6 (Santiago) 需求:查看当前数据库下所有的表 ...

  5. 【3.3】mysql中的Federated存储引擎,远程表,相当于sql server的linked server

    MySQL中针对不同的功能需求提供了不同的存储引擎.所谓的存储引擎也就是MySQL下特定接口的具体实现. FEDERATED是其中一个专门针对远程数据库的实现.一般情况下在本地数据库中建表会在数据库目 ...

  6. 谈谈MySQL数据表的类型(转)

    谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...

  7. MySQL系统表的利用姿势(浅探)

    MySQL数据库文件读写 权限要求: 具备读写权限并且目标文件为可读内容 目标内容具有完整路径且目录可访问 目标内容是否具备文件读写操作权限 查看是否有文件读写权限 show variables li ...

  8. mysql之子查询、视图、事务及pymysql等

    数据准备 CREATE TABLE `emp` ( `id` int(0) NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL, `gender` ...

  9. MySQL全面瓦解15:视图

    概述 很多时候,我们会有一些很复杂的数据库操作,比如整合用户的行为数据,那这些数据可能包含用户的餐饮.生活日用.充值消费.交通出行.通讯物流.交通出行.医疗保健.住房物业.运动健康... 基于此,我们 ...

随机推荐

  1. css3 box-flex

    应用地址:http://www.jb51.net/css/467291.html box-flex是css3新添加的盒子模型属性,它的出现打破了我们经常使用的浮动布局,实现垂直等高.水平均分.按比例划 ...

  2. C# 反射 Type.GetType()

    对于外部调用的动态库应用反射时要用到Assembly.LoadFile(),然后才是获取类型.执行方法等;当用反射创建当前程序集中对象实例或执行某个类下静态方法时只需通过Type.GetType(&q ...

  3. ceph添加osd(ceph-deploy)

    修改主机名和 /etc/hosts 关闭防火墙和 SELINUX 安装和配置 NTP ceph-deploy 节点安装 安装 ceph-deploy sudo yum install ceph-dep ...

  4. Java中BufferedReader、InputStreamReader、Scanner和System.in区别

    Java中获取键盘输入值的方法以前写算法都是C/C++写的,现在用Java写,虽然算法是独立于语言的,但是Java从键盘获取输入确实有些不一样.在C/C++中我们可以用scanf和cin来获取用户从键 ...

  5. ORACLE数据库找回用户密码

    安装完oracle数据库后,登录时sys,system,scott这几个用户密码输入后都不对,查阅资料后解决 1,cmd下输入sqlplus,之后让你输入用户名,输入这个 "/as sysd ...

  6. MySql 查询表结构信息

    select Column_name as 列名,is_nullable as 是否可为空,data_type as 数据类型,column_default as 默认值,case when colu ...

  7. List集合流处理类型小结

    本文为博主原创,未经允许不得转载 对应实体类 import lombok.Getter; import lombok.Setter; @Getter @Setter public class Stud ...

  8. vue--transition-group

    1.为什么要使用<transition-group> <transition></transition>是vue封装的过渡组件 <transition nam ...

  9. 历届试题 小数第n位 (求循环节)

    只要被除数出现重复,就表明循环节出现了.即使商不是循环小数,也可以补0作为循环节,这样就可以统一处理了. AC代码 #include <stdio.h> #include <vect ...

  10. _spellmod_aura_pct

    属性光环 为玩家增加光环或降低属性 `aura`光环ID `auraType1` 配置属性('空','生命值','全属性','近战攻击强度','远程攻击强度','法术强度','治疗效果','施法速度' ...