mysql使用federated引擎實現遠端訪問資料庫(跨網路同時操作兩個資料庫中的表)
問題:
這裡假設我需要在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才有許可權訪問遠端的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]
> grant all PRIVILEGES on discuz.* to [email protected]'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:[email protected]:13306/rzem/e_hostcomputer";
在本地就可以看到遠端表裡面的內容了
修改本地的遠端表
可以到遠端看到遠端也被修改了
相關推薦
mysql使用federated引擎實現遠端訪問資料庫(跨網路同時操作兩個資料庫中的表)
問題: 這裡假設我需要在IP1上的database1上訪問IP2的database資料庫內的table2表 方法: 這裡database作為本地資料庫需要開啟federated引擎才可以訪問遠端的database內的表,具體開啟方法如下: 本地IP1資料庫DATABASE
java多執行緒操作兩個資料庫.
package com.dinglin; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i
多關鍵字排序(一個快速排序加兩個氣泡排序)
#include <stdio.h> #include <stdlib.h> typedef struct { char name[20]; float math,english,computer; float total; }Student; void
ruby on rails同時連線兩個資料庫
使用 ruby on rails 做專案開發時,有時候需要同時連線兩個資料庫,沒有這樣做過的開發人員可能有點困難,其實方法很簡單,在這裡簡單介紹一下,希望能給大家帶來幫助。 本次使用的資料庫分別為 Mysql DB 和 Oracle DB (兩個資料庫可以為同
SpringMVC配置雙資料來源,一個java專案同時連線兩個資料庫
資料來源在配置檔案中的配置 [java] view plain copy print? <pre name=“code”class=“java”><?xml version=“1.0” encoding=“UTF-8”?> <beans xml
Ubuntu Server 18 解除安裝MySQL5.*安裝MySQL8.0,實現遠端訪問資料庫
如果你在Ubuntu18直接用 sudo apt-get install mysql-client mysql-server 系統預設會安裝MySQL會預設安裝5.7,但是MySQL5.7版本最高只適配到Ubuntu17.04,而MySQL8.0最高適配到Ubuntu18.04。
9.資料庫伺服器部署之------3步實現遠端訪問
如果正常安裝,那麼三步走起就可以了,如果出現問題請參考最下面的解決方法 1.先確定啟動了資料庫服務 2.確認啟用TCP/IP 3.白名單放行 4.收工,連線看看 附錄:PS--不見得要開各種東西~ ------------------------不能實現可以
Oracle資料庫通過DBLINK實現遠端訪問
什麼是DBLINK?dblink(Database Link)資料庫連結顧名思義就是資料庫的連結 ,就像電話線一樣,是一個通道,當我們要跨本地資料庫,訪問另外一個數據庫表中的資料時,本地資料庫中就必須要建立遠端資料庫的dblink,通過dblink本地資料庫可以像訪問本地資
noVNC+VNCserver實現遠端訪問Docker容器桌面
一、實驗環境 主機:Ubuntu16.04 目標機:docker容器 說明:在主機Ubuntu16.04中安裝docker,並虛擬出一臺Ubuntu容器,將該容器作為要遠端訪問的目標機 二、實現過程 1.在docker容器中安裝vnc4server,並啟動vnc4serv
jupyter notebook實現遠端訪問
1、生成配置檔案 (windows在cmd下|linux在終端),輸入jupyter notebook --generate-config回車,會生成一個jupyter_notebook_config.py的配置檔案,這個檔案在使用者目錄下~/.jupyter/jupyte
mysql無法連線遠端資料庫(ERROR 2013:Lost connection to MySQL server)
ERROR 2013 (HY000) Lost connection to MySQL server at ‘reading authorization packet’ 重啟mysql不行就重啟Windows伺服器!!!!!! 重啟mysql不行就重啟Windows伺服器!!!!
內網伺服器搭建l2tp/ipsec VPN伺服器實現遠端訪問
這裡先對vpn的實現法法做一個介紹: (一)安裝VPN: 1.vpn組成及作用 openswan:提供ipsec服務,設定預共享金鑰 ppp:撥號軟體,提供使用者名稱和密碼用於撥號 xl2tpd:提供l2tp服務 2.安裝前準備(ppp及其他依賴包) yum
vue-cli+webpack-simple建立專案訪問後臺(跨域問題解決)
在網上找了很多都是webpack在config目錄下的index.js裡面程式碼,這裡總結了一個webpack-simple跨域的問題,在webpack.config.js的devServer中配置: devServer:{ port: 8080,//自己
PuTTY遠端訪問Linux(網路配置)
實驗環境 系統:Windows 7 64位 虛擬機器:VMware workstation Pro 虛擬機器OS:Lubuntu 實驗步驟 1. 配置虛擬機器ip地址 將VMware網路連線模式改為橋接模式 重啟網絡卡,命令為/etc/init.d/netwo
Mysql5.7解壓版(ZIP)安裝並配置遠端訪問教程(Win10)
前言 從MySQL5.7開始解壓版的初始化,遠端連線就是各種坑,特此記錄下來成功步驟,供大家參考; 前期準備 解除安裝舊服務 如果之前嘗試過安裝Mysql5.X服務卻中途沒有成功的,先清理乾淨服務; 以管理員許可權開啟CMD視窗,方法:開始選單->Win
Spring 實現遠端訪問詳解——rmi
一. 緒論 Spring為各種遠端訪問技術提供整合工具類。Spring遠端訪問通過使用普通POJOs,能更容易的開發遠端訪問服務。目前,Spring遠端訪問的主要技術如下: 1. 遠端呼叫
C# 中WinForm 應用程式實現遠端檔案管理(上傳、下載)的種種問題——遠端伺服器返回錯誤
C# 中WinForm 應用程式實現遠端檔案管理(上傳、下載)的種種問題 WinForm可以通過C#語言提供的WebClient類的UploadFile和DownLoadFile函式實現檔案的上傳和下載功能,但是這也讓我嘗試到了使用這個函式時的辛酸,搞了整整一天才
Window中MySQL實現遠端訪問
上篇部落格中講述了Linux中mysql實現遠端訪問,其實原理是一樣的,這篇部落格中稍有補充: 為特定資料庫新增使用者(該使用者連線資料庫時,只顯示該資料庫) 為該使用者設定特定許可權(比如該使用者
Windows 下MySql無法實現遠端訪問。問題提示1024-can't get hostname for your address
解決辦法 第一種方法 修改Hosts 在 MySql Server 所在伺服器上,修改 Windows 的 hosts 檔案,增加一行記錄,如: 100.ZZZ.YYY.XXX dummy.ju690.cn 然後在 100.ZZZ.YYY.XXX 機器上用 Pyt
Linux中mysql實現遠端訪問
MySql預設是不能通過遠端訪問的 1.啟動MySQL服務: service mysqld start 2.開啟MySQL資料庫: mysql -u r