zoukankan      html  css  js  c++  java
  • mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)

    需求:
    需要在IP1上的database1上访问IP2的database数据库内的table2表
    这里database作为本地数据库需要开启federated引擎才可以访问远程的database内的表

    > show engines;
    

    此处输入图片的描述
    如果有FEDERATED引擎,但Support是NO,说明你的mysql安装了这个引擎,但没启用,去my.cnf文件末添加一行 federated
    配置my.cnf,加入feterated

    [mysqld]
    feterated
    

    重新启动mysql即可。

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

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

    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;
    create user 'test'@'%' identified by '123456'
    # test 数据库的所有权限授权给 ted 这个用户,允许 ted 用户在 192.168.20.22 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456 。
    grant all PRIVILEGES on test.* to ted@'192.168.20.22' identified by '123456';
    

    在本地数据库database1中创建远程数据库表
    要求表结构要一模一样,所以可以先

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

    SHOW CREATE TABLE database2.table2
    

    得到建表语句

    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

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

    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`)
    ) ENGINE=federated connection="mysql://scp_pm_154_54:scp_pm_154_54@112.219.11.139:13306/rzem/e_hostcomputer";
    

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

  • 相关阅读:
    《Codeforces Round #696 (Div. 2)》
    从Java源码角度聊设计模式之工厂模式
    HashMap死循环【基于JDK1.7】情景重现与分析(带示意图)
    Java应用级别的线程中断—interrupt&isInterrupted&interrupted的区别
    Java队列学习笔记(2)---DelayQueue
    Java队列学习笔记(1)---AbstractQueue&PriorityQueue
    junit测试用例从src/test/resources下的txt文件读取多行数据并随机选择一行
    (Ant编程) Ienumerable类型、枚举器 和自定义的 linq
    如何 给select 下拉框 设定默认值
    分页sql
  • 原文地址:https://www.cnblogs.com/flyhgx/p/7808098.html
Copyright © 2011-2022 走看看