【转】 mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)
2017-06-27 11:58
1001 查看
原文转自:http://www.2cto.com/database/201412/358397.html
>show engines;
可以在上图中看出本地数据库没有开启federated引擎
2.如果没有开启
配置my.cnf
[mysqld]
feterated
3.重启MYSQL服务器
2)创建远程登陆用户并授权
?
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上面访问这个数据库
得到建表语句
?
远程IP2上数据库database2中的表table2
在本地建立相同的表(远程表)
?
在本地就可以看到远程表里面的内容了
修改本地的远程表
可以到远程看到远程也被修改了
问题:
这里假设我需要在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才有权限访问远程的database22)创建远程登陆用户并授权
?
> 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得到建表语句
?
在本地建立相同的表(远程表)
?
修改本地的远程表
可以到远程看到远程也被修改了
相关文章推荐
- mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)
- mysql使用federated引擎实现dblink远程表访问
- mysql 使用federated 引擎实现dblink 远程表访问
- Mysql使用Federate引擎实现操作本地表映射远程操作表
- Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
- MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问
- 用mysql的federated数据引擎和触发器实现远程服务器表数据同步
- MySQL开启federated引擎实现数据库表映射
- mysql主主同步两个数据库同时写入,实现原理:自动增长主键不重复
- 实现MySQL远程访问操作流程
- mysql远程访问,主从/主主双机备份,以及使用keeplived实现故障自动切换(二)
- mysql远程访问,主从/主主双机备份,以及使用keeplived实现故障自动切换(一)
- Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
- Mysql基于FEDERATED存储引擎的远程表使用
- mysql 跨数据库 查询,更新 federated引擎使用记录
- [转]实现MySQL远程访问操作流程
- mysql 使用federated 实现dblink 远程表访问
- MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问
- Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
- 使用Spring+Hibernate同时操作两个数据库