mysql使用federated引擎實現遠端存取資料庫(跨網路同時操作兩個資料庫中的表),mysqlfederated

來源:互聯網
上載者:User

mysql使用federated引擎實現遠端存取資料庫(跨網路同時操作兩個資料庫中的表),mysqlfederated
問題:

這裡假設我需要在IP1上的database1上訪問IP2的database資料庫內的table2表

方法:

這裡database作為本機資料庫需要開啟federated引擎才可以訪問遠端database內的表,具體開啟方法如下:


本地IP1資料庫DATABASE1開啟FEDERATED引擎

  http://blog.csdn.net/bravezhe/article/details/8269648


MYSQL命令列,查看FEDERATED引擎是否開啟,預設是不開啟
>show engines;

可以在中看出本機資料庫沒有開啟federated引擎

2.如果沒有開啟
配置my.cnf 
[mysqld]
feterated


3.重啟MYSQL伺服器

遠程IP2資料庫database2開啟遠端連線

開啟之後,本機資料庫database1才有許可權訪問遠端database2

http://blog.chinaunix.net/uid-23215128-id-2951624.html

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;


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

得到建表語句

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";
在本地就可以看到遠端資料表裡面的內容了



修改本地的遠端資料表


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



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.