原文转自:http://www.2cto.com/database/201412/358397.html

问题:

这里假设我需要在IP1上的database1上访问IP2的database数据库内的table2表

方法:

这里database作为本地数据库需要开启federated引擎才可以访问远程的database内的表,具体开启方法如下:

本地IP1数据库DATABASE1开启FEDERATED引擎

MYSQL命令行,查看FEDERATED引擎是否开启,默认是不开启

>show engines;

可以在上图中看出本地数据库没有开启federated引擎

2.如果没有开启
配置my.cnf
[mysqld]
feterated

3.重启MYSQL服务器

远程IP2数据库database2开启远程连接

开启之后,本地数据库database1才有权限访问远程的database2

2)创建远程登陆用户并授权

1
2
3
4
5
6
7
8
9
USE mysql;
SELECT host,user,PASSWORD from user;
 
GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "yourpassward";
 
FLUSH PRIVILEGES;
 
USE mysql;
SELECT host,user,PASSWORD from user;

CODE: [COPY]
> grant all PRIVILEGES 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 等,具体权限间用“,”半角逗号分隔。
discuz.* 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的 *
表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授
权为“数据库名.表名”。
ted 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。这里为了易用性你最好用root用户,因为别人远程的时候也会用,密码也要用root用户的密码,因为别人也是这么用的。(保证大家都用同一个登录信息访问同一个数据库,这是非常重要的)
123.123.123.123 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
123456 为用户的密码。
执行了上面的语句后,再执行下面的语句,方可立即生效。
CODE: [COPY]
> flush privileges;

查看远程数据库的访问权限更新之后的情况:

可以看到已经有一个虚拟的用户scp_pm_154_54可以远程访问IP2上的database2了(这个scp_pm_154_54只是一个虚拟的用户,仅仅用来远程连接使用),下面就试试用这个账户能不能在另一个IP3上面访问这个数据库

在本地数据库database1中创建远程数据库表

要求表结构要一模一样,所以可以先

在database2里面找到建立表table2的语句

SHOW CREATE TABLE database2.table2

得到建表语句

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `e_hostcomputer` (
`ID` bigint(20) NOT NULL COMMENT 'ID',
`CODE` varchar(30) DEFAULT NULL COMMENT '编码',
`NAME` varchar(50) DEFAULT NULL COMMENT '名称',
`IP` varchar(15) DEFAULT NULL COMMENT 'IP地址',
`STATUS` char(1) DEFAULT NULL COMMENT '状态',
`CRTR` varchar(50) DEFAULT NULL COMMENT '创建者',
`CRTDT` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`UPDR` varchar(50) DEFAULT NULL COMMENT '修改者',
`UPDDT` timestamp NULL DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='上位机表'

远程IP2上数据库database2中的表table2

在本地建立相同的表(远程表)

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `e_hostcomputer_link39` (
  `ID` bigint(20) NOT NULL COMMENT 'ID',
  `CODE` varchar(30) DEFAULT NULL COMMENT '编码',
  `NAME` varchar(50) DEFAULT NULL COMMENT '名称',
  `IP` varchar(15) DEFAULT NULL COMMENT 'IP地址',
  `STATUS` char(1) DEFAULT NULL COMMENT '状态',
  `CRTR` varchar(50) DEFAULT NULL COMMENT '创建者',
  `CRTDT` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  `UPDR` varchar(50) DEFAULT NULL COMMENT '修改者',
  `UPDDT` timestamp NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`ID`)

在本地就可以看到远程表里面的内容了

修改本地的远程表

可以到远程看到远程也被修改了

【转】 mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)的更多相关文章

  1. 同时操作两个数据库:报错Illegal attempt to associate a collection with two open sessions

    今天我在一个操作两个数据库的SSH里 同时插入1条数据 报错 Illegal attempt to associate a collection with two open sessions 在这里有 ...

  2. MySQL开启federated引擎实现数据库表映射

    1.查看federated引擎是否开启 点击进入Navicat并点击键盘上F6,出现命令行界面 ,输入指令:show engines; 2.开启federated引擎 Windows系统 : 在my. ...

  3. mysql添加federated引擎实现dblink远程表访问

    查看mysql数据库federated引擎是否开启. show engines; 若没有开启federated则在mysql配置文件my.cnf中mysqld中添加federated. 在远程数据库中 ...

  4. mysql添加Federated引擎问题

    现在我有这么一个需求, 就是有两个项目, 一个叫项目A,一个项目B, 由于A的用户表和B的用户表是要实现一样的. 例如: 我在A项目中注册了,要实现在B项目中也能登录, 当用到B的时候, 由于B数据库 ...

  5. Mysql 开启Federated引擎以及使用

    FEDERATED是其中一个专门针对远程数据库的实现.但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中通过这个引擎可以实现类似Oracle 下DBLINK的远程 ...

  6. 利用MySQL之federated引擎实现DBLink功能

    有时候我们需要跨库join查询,但是配置多数据源成本又太高,Oracle提供了DBLink功能,MySQL中也有类似的实现:federated-engine. MySQL中使用federated引擎的 ...

  7. MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句

    查询所有数据库占用磁盘空间大小的SQL语句: ,),' MB') as data_size, concat(,),'MB') as index_size from information_schema ...

  8. 用java实现操作两个数据库的数据

    1.首先需要在jdbc的配置文件里面配置两个数据库的连接 数据库1的配置 driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://地址:3306/数 ...

  9. Mysql 开启Federated引擎的方法

    原文参考:http://www.thinksaas.cn/topics/0/63/63532.html 进入mysql命令行,没有看到Federated,说明没有安装 mysql>show en ...

随机推荐

  1. Todolist项目总结 JavaScript+jQuery

    Html部分 消息提醒,开始隐藏 内容区 2.1    标题 2.2    表单(输入框.提交按钮) 2.3 清单列表 2.4 任务详情遮罩 2.5 任务详情 3   video引入提示音乐 Css部 ...

  2. 5、Spring-Cloud-声明式调用 Feign(上)

    5.1.写一个 Feign 害户端 新建项目: 依赖: <dependency> <groupId>org.springframework.boot</groupId&g ...

  3. [转].NET设计模式系列文章

    最初写探索设计模式系列的时候,我只是想把它作为自己学习设计模式的读书笔记来写,可是写到今天,设计模式带给我的震撼,以及许多初学者朋友的热心支持,让我下定决心要把这个系列写完写好,那怕花上再多的时间也无 ...

  4. 404 Note Found 队-需求报告

    目录 组队后的团队项目的整体计划安排 项目logo及思维导图 项目logo 思维导图 产品思维导图 产品思维导图-引导 产品思维导图-后端数据处理.存储 产品思维导图-短信识别 产品思维导图-智能分析 ...

  5. DPDK安装依赖项合集 环境合集

    前言 在dpdk编译过程中,由于一些依赖项的限制,dpdk在纯净的系统上安装需要花一些功夫.本文总结了编译dpdk所需的依赖项,并归纳了安装合集,在安装过程上可以省下大量的搜索时间. 使用系统 ubu ...

  6. Node 192.168.248.12:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

    [root@node00 src]# ./redis-trib.rb add-node --slave --master-id4f6424e47a2275d2b7696bfbf8588e8c4c3a5 ...

  7. VC中TRACE ASSERT VERIFY之用法

    一.TRACE宏     当选择了Debug目标,并且afxTraceEnabled变量被置为TRUE时,TRACE宏也就随之被激活了.但在程序的Release版本中,它们是被完全禁止的.下面是一个典 ...

  8. java二维码工具类,中间带LOGO的,很强大

    jar包下载maven 配置: Xml代码 收藏代码 <dependency> <groupId>com.google.zxing</groupId> <ar ...

  9. 搭建Java的运行和开发环境

    Java最大的优势就是跨平台,即编译一次,就能在linux.windows和mac等平台运行,无需再次编译.而典型的C和C++ 则是源代码跨平台,需要根据不同平台的编译规范来进行编译. Java如何跨 ...

  10. Python中级 —— 01面向对象进阶

    面向对象进阶 总结.补充(http://blog.csdn.net/fgf00/article/details/52479307) 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 ...