【转】 mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)
原文转自: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]
feterated3.重启MYSQL服务器
远程IP2数据库database2开启远程连接
开启之后,本地数据库database1才有权限访问远程的database2
2)创建远程登陆用户并授权
123456789USE 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
得到建表语句
123456789101112CREATE 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
在本地建立相同的表(远程表)
123456789101112CREATE
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`)
) ENGINE=federated
connection
=
"mysql://scp_pm_154_54:scp_pm_154_54@112.219.11.139:13306/rzem/e_hostcomputer"
;
在本地就可以看到远程表里面的内容了
修改本地的远程表
可以到远程看到远程也被修改了
【转】 mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)的更多相关文章
- 同时操作两个数据库:报错Illegal attempt to associate a collection with two open sessions
今天我在一个操作两个数据库的SSH里 同时插入1条数据 报错 Illegal attempt to associate a collection with two open sessions 在这里有 ...
- MySQL开启federated引擎实现数据库表映射
1.查看federated引擎是否开启 点击进入Navicat并点击键盘上F6,出现命令行界面 ,输入指令:show engines; 2.开启federated引擎 Windows系统 : 在my. ...
- mysql添加federated引擎实现dblink远程表访问
查看mysql数据库federated引擎是否开启. show engines; 若没有开启federated则在mysql配置文件my.cnf中mysqld中添加federated. 在远程数据库中 ...
- mysql添加Federated引擎问题
现在我有这么一个需求, 就是有两个项目, 一个叫项目A,一个项目B, 由于A的用户表和B的用户表是要实现一样的. 例如: 我在A项目中注册了,要实现在B项目中也能登录, 当用到B的时候, 由于B数据库 ...
- Mysql 开启Federated引擎以及使用
FEDERATED是其中一个专门针对远程数据库的实现.但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中通过这个引擎可以实现类似Oracle 下DBLINK的远程 ...
- 利用MySQL之federated引擎实现DBLink功能
有时候我们需要跨库join查询,但是配置多数据源成本又太高,Oracle提供了DBLink功能,MySQL中也有类似的实现:federated-engine. MySQL中使用federated引擎的 ...
- MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
查询所有数据库占用磁盘空间大小的SQL语句: ,),' MB') as data_size, concat(,),'MB') as index_size from information_schema ...
- 用java实现操作两个数据库的数据
1.首先需要在jdbc的配置文件里面配置两个数据库的连接 数据库1的配置 driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://地址:3306/数 ...
- Mysql 开启Federated引擎的方法
原文参考:http://www.thinksaas.cn/topics/0/63/63532.html 进入mysql命令行,没有看到Federated,说明没有安装 mysql>show en ...
随机推荐
- 【[SDOI2009]Elaxia的路线】
魏佬告诉我跑得快不一定赢,不跌跟头才是成功 我决定把这句话作为魏佬的名言记下来 等以后人人捧着魏佬语录的时候,我可以告诉他们魏佬从小就开始向我传授人生经验 但我就是跑的快,而且非常快 成功卡到了b站最 ...
- urllib下使用Xpath表达式示例
urllib下使用Xpath表达式示例 使用xpath表达式需要先将需要匹配的数据转换成tree格式,这就需要先装lxml模块.安装方法可以使用pip安装. 示例代码: import urllib.r ...
- 【题解】洛谷P1966 [NOIP2013TG] 火柴排队(树状数组+逆序对)
次元传送门:洛谷P1966 思路 显然在两排中 每排第i小的分别对应就可取得最小值(对此不给予证明懒) 所以我们只在意两排的火柴是第几根 高度只需要用来进行排序(先把两个序列改成有序的方便离散化) 因 ...
- 使用java代码将时间戳和时间互相转换
时间戳转时间: SimpleDateFormat simpleDateFormat = null; simpleDateFormat = new SimpleDateFormat("yyyy ...
- 用JavaScript编写简单斗地主效果Es6
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HashMap源码阅读与解析
目录结构 导入语 HashMap构造方法 put()方法解析 addEntry()方法解析 get()方法解析 remove()解析 HashMap如何进行遍历 一.导入语 HashMap是我们最常见 ...
- angular4 防二次重复点击
监听click事件, 默认三秒钟内的点击事件触发第一次的点击事件,也可以通过throttleTime自定义时间 只触发第一次 /** * <div (throttleClick)="g ...
- linux下启动和终止JAVA程序shell脚本
1.启动脚本start.sh #run application backgroud nohup java -jar chess-admin->& & #record the pr ...
- 为什么浏览器控制台返回不是undefined,而是一串数字
setTimeout( (function(){console.log("ok")} )(), 16) 在浏览器控制台输入这段代码的时候返回的不是"undefined&q ...
- TinyMCE插件:RESPONSIVE filemanager 9 安装与配置
RESPONSIVE filemanager 功能: 文件上传 文件下载 重命名文件 删除文件 新建文件夹 为每个用户创建子目录 上传文件效果图: 浏览文件效果图: 文件说明: filemanager ...