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. 20165305 《网络对抗技术》 Kali安装

    一.安装kali 在虚拟机中安装kali我参考了下面的网页,里面写的很全面,所以我就不重复了,我主要说一下kali里面的环境配置. 在虚拟机中安装kali linux 注意:输入用户和密码时,kali ...

  2. CCF CSP 201609-2 火车购票

    题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...

  3. ORA-12557协议适配器不可加载

    背景:以前电脑没有装ORACLE,仅是安装了简易客户端,此次想安装一个11g数据库,安装完成后用PLSQL登录,发现报错. 解决方案A:使用免安装的oracle客户端(instantclient_11 ...

  4. HBase Thrift过滤语法

    摘抄自hbase ref guide 0.94: 在写本文的时候,hbase ref guide已经更新到1.2及2.0了,但是个人感觉Thrift过滤语法部分写得都没有0.94的好,省掉了examp ...

  5. TeamCity 创建docker构建步骤

    1 dockerfile source 选择dockerfile文件的路径,一共有三种方式: 1.1.1 file content 这种方式是在线写dockerfile文件. 其在进行创建的时候会在 ...

  6. Docker Registry私有仓库搭建

    部署registry 准备一个registry.mydocker.com 的证书 对私有registry取名registry.mydocker.com 目录规划 仓库数据目录:/data/docker ...

  7. rsync如何不指定密码文件

    平时用rsync做数据同步时,都是通过--password-file指定一个密码文件 这个密码文件权限要求比较高,一般是600,属主属组都是rsync命令执行者 如果是在脚本中执行rsync,比如定时 ...

  8. firefox(火狐)下 js中设置checkbox属性checked="checked"已有,但复选框却不显示勾选的原因

    刚看到问题时以为是浏览器兼容性的原因,ie.google都能正常显示. 网上查询之后发现是jQuery的attr()方法用的不恰当. jQuery1.6之前使用attr()可以修改 ,从jQuery ...

  9. Java核心知识盘点(二)- 缓存使用

    Redis有哪些数据类型 String.Hash.List.Set.ZSet String:字符串 Hash:哈希 Set:集合 List:列表 ZSet:有序集合 Redis内部结构 1.Redis ...

  10. IDEA 介绍

    转载:https://blog.csdn.net/kanchaishaonian/article/details/81107210 前言:IntelliJ IDEA 如果说IntelliJ IDEA是 ...