這裡假設我需要在IP1上的database1上訪問IP2的database數據庫內的table2表
這裡database作為本地數據庫需要開啟federated引擎才可以訪問遠程的database內的表,具體開啟方法如下:
MYSQL命令行,查看FEDERATED引擎是否開啟,默認是不開啟
>show engines;
可以在上圖中看出本地數據庫沒有開啟federated引擎
2.如果沒有開啟
配置my.cnf
[mysqld]
feterated
3.重啟MYSQL服務器
開啟之後,本地數據庫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;CODE: [COPY]
查看遠程數據庫的訪問權限更新之後的情況:
可以看到已經有一個虛擬的用戶scp_pm_154_54可以遠程訪問IP2上的database2了(這個scp_pm_154_54只是一個虛擬的用戶,僅僅用來遠程連接使用),下面就試試用這個賬戶能不能在另一個IP3上面訪問這個數據庫
要求表結構要一模一樣,所以可以先
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:[email protected]:13306/rzem/e_hostcomputer";在本地就可以看到遠程表裡面的內容了
修改本地的遠程表
可以到遠程看到遠程也被修改了