國內私募機構九鼎控股打造APP,來就送 20元現金領取地址:
http://jdb.jiudingcapital.com/phone.html
內部邀請碼: C8E245J (不寫邀請碼,沒有現金送)
國內私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統掛牌的公眾公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。
內部邀請碼: C8E245J (不寫邀請碼,沒有現金送)
國內私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統掛牌的公眾公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
在一個項目的預商用環境下,我搭建的數據庫都是以“test_”開頭的,昨天應開發要求給創建了一個只有select權限的用戶以供查看數據排錯,但是奇怪的事情就發生了,開發過一會兒跟我說用這個賬戶可以修改數據!
我自己試了一下尼瑪果然可以,於是各種排查,最后鎖定在數據庫名稱上,因為只要新建了用戶,在不賦予任意權限之前都可以操作這項目所屬的幾個數據庫,而對於其它數據庫則規規矩矩來。然后請教別人,在官方的操作手冊里指出grant命令創建權限時注意數據庫名稱里的通配符“_”和“%”要及時轉義,但是經排查測試發現並不是匹配問題,於是繼續瘋狂搜索,終於找着一篇帖子:http://space.itpub.net/7607759/viewspace-676674
- mysql.user表決定是否允許或拒絕到來的連接。對於允許的連接,user表授予的權限指出用戶的全局(超級用戶)權限。這些權限適用於服務器上的all數據庫。
- mysql.db表范圍列決定用戶能從哪個主機存取哪個數據庫。權限列決定允許哪個操作。授予的數據庫級別的權限適用於數據庫和它的表。
看到這里,我們找到原因了!原來在mysql里默認以test開頭的數據庫能被任意可登陸用戶訪問操作!具體可以select * from mysql.db where user=''\G看一下。
“從權限上來看,host為%,user為空,這就說明了不限制的,所有能連接到MySQL的用戶,幾乎都擁有test庫的所有權限”於是我推測出奇怪問題的服務器之前在安裝Mysql后沒有執行mysql_secure_installation命令,而只是單純刪除了test數據庫,再對比執行過安全初始化的mysql,其中mysql.db表里已經沒有了test記錄。
另外,以后建立數據庫不要隨便以“test”開頭了。