1. 程式人生 > 其它 >Mysql檢視無許可權訪問的批量修改方法

Mysql檢視無許可權訪問的批量修改方法

我們在使用Mysql資料庫的時候,在專案上線遷移的時候,有時候由於開發環境和生產環境的差異,有時候

Mysql使用者不一定能夠保持一致,而其中view檢視A使用者建立的記錄B使用者就會無法訪問

如果檢視的記錄比較少的話還好,如果多,那一個個重新修改建立就不太可能。

這裡找到一個批量修改“定義者”的方法。

先根據如下SQL查詢條件拼裝出所有需要修改的檢視的SQL

sql> select concat("alter DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `",TABLE_SCHEMA,"`.",TABLE_NAME," as ",VIEW_DEFINITION,";") from information_schema.VIEWS where DEFINER = 'olduser@%';

然後執行下面的SQL批量執行就可以了

alter DEFINER=`root`@`localhost` 
SQL SECURITY DEFINER VIEW `test`.test_view as select `t`.`storeid` AS `storeid` from (`test`.`sc_saleorder_pdt` `t` left join `test`.`sc_saleorder` `m` on((`t`.`dataid` = `m`.`id`))) where (`m`.`jhtype` = 'wl');
alter DEFINER=`root`@`localhost`