1. 程式人生 > >mysql使用federated引擎實現遠端訪問資料庫(跨網路同時操作兩個資料庫中的表)

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開啟遠端連線(這種做法是很危險的)

注意:這種做法很危險,因為可能導致你的IP可以用,別人的遠端就訪問不到,這時候你必須重置資料庫密碼來恢復一切預設設定!

開啟之後,本地資料庫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