第一種:
給root賦值所有權(quán)限:注意在命令符下面操作。
grant all privileges on *.* to root@”%” identified by “.”;
flush privileges;
但是這種重啟之后一會就又不行了。
成都創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元桃城做網(wǎng)站,已為上家服務(wù),為桃城各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
第二種:
復(fù)制視圖創(chuàng)建語句,直接將create改成alter,definer改成相關(guān)的,比如root@localhost 例如:
用alter view 修改definer的值,alter ALGORITHM=UNDEFINED DEFINER=`public`@`192.168.0.%` SQL SECURITY DEFINER VIEW `view_product` AS 視圖選擇語句。
通過執(zhí)行use information_schema;和 select TABLE_SCHEMA,TABLE_NAME,DEFINER from views; 兩條語句,可以查詢到definer是否更改成功了。
原因分析
因為創(chuàng)建視圖使用的是xff@%用戶(目前已經(jīng)不存在),然后登錄用戶使用的是xff@localhost用戶,導(dǎo)致MySQL認(rèn)為現(xiàn)在的用戶無權(quán)限訪問該視圖,解決方法就是在當(dāng)前用戶下重建該視圖。
題外話:還有一種方法是如果你是運維人員,此問題直接交由程序去處理,讓其檢查創(chuàng)建觸發(fā)器、視圖、存儲過程等sql。如果包含root@%,替換之。重新創(chuàng)建。沒有嘗試過,后面可以試試。