MySQL學習與遇到的坑
阿新 • • 發佈:2018-12-18
MySQL資料推送表操作
最近之前的專案交維,需要對之前開發的系統進行許可權整理以及許可權控制,專案之前的需求有一個利用MySQL的federated引擎實現資料庫表對映,原理是在本地建立檢視,在通過在遠端的資料庫連線這個檢視。備註:設想是新建使用者用來遠端訪問我們的檢視(新使用者只給查詢許可權),root賬號建立檢視,當時root使用者是允許所有機器連線的,對應的ip訪問許可權是[email protected]’%’(此處將是一個坑) 1先在本地建立檢視
CREATE VIEW test_TT AS SELECT luyou.ID AS ROUTEID, luyou.`name` AS ROUTENAME, dmp_luyoufz.ID AS ROUTEGROUPID, dmp_luyoufz.`name` AS ROUTEGROUPNAME FROM luyou LEFT JOIN dmp_luyou_luyoufz ON luyou.ID = dmp_luyou_luyoufz.luyouid LEFT JOIN dmp_luyoufz ON dmp_luyou_luyoufz.luyoufzid = dmp_luyoufz.ID WHERE luyou.ext0 = '1' AND luyou.ext4 = '1';
2在遠端資料庫上(需要支援federated)建立表連線此檢視
drop table if EXISTS `test_route`;
CREATE TABLE `test_route` (
`routeid` int(11) DEFAULT NULL,
`routename` varchar(255) DEFAULT NULL,
`routegroupid` int(11) DEFAULT NULL,
`routegroupname` varchar(255) DEFAULT NULL
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://csmsyc: [email protected]:3306/tests/test_TT'
mysql使用者的許可權發生變化
隨著專案交維,客戶要求對資料庫的許可權控制,於是去mysql庫中的user表一頓操作,各種使用者都嚴格限制,只允許特定的ip訪問。第二天GG,電話被打炸了,所有的遠端推送表均失效,訪問下來都是這個錯
The user specified as a definer ('root'@'%')
去網上度一下給的解釋幾乎一樣,操作也是一樣
grant all privileges on *.* to [email protected]"%" identified by ".";
但是這個是不可能的我要控制root使用者的許可權,一開始還以為root使用者的許可權控制會影響非root使用者的許可權訪問,這個是不影響的。整個下午各種嘗試,終於在下班的想到本機的檢視是不是有問題,做了個測試,發現只要建立的該檢視的許可權發生改變,檢視就會無法訪問。於是研究看檢視的許可權控制可以參照這個。解決方法:可以統一建立mysql檢視使用者的許可權,或者是將已經建立好的檢視的安全性定義由definer設定為invoker。完美的解決了問題,get了新的知識。