Mysql

MySQL - 是否可以分配權限來計算數據庫中的表數,而無需對單個表授予權限?

  • January 4, 2017

作為腳本的一部分,我試圖計算特定 MySql 模式中存在的表的數量。

使用我自己的使用者我正在使用查詢

SELECT COUNT(*) FROM information_schema.tables
WHERE table_schema = dbName 

但是,我希望執行此腳本的使用者擁有盡可能少的權限,特別是我不希望他們對屬於架構的任何表具有任何選擇權限

是否可以分配允許使用者在不訪問表本身的情況下計算表數的授權?

afaik,這是不可能的。但是,作為一種解決方法,您可以創建使 count(*) 處於所需架構下的函式,並將此函式上的執行權限授予使用者。使用者將無法訪問表,但將獲得所需的計數。

一種選擇是讓使用者訪問單個非NULL列,該列不提供太多資訊,但允許COUNT(*)成功。

例如:

GRANT SELECT(TABLE_TYPE) ON INFORMATION_SCHEMA.TABLES TO blind_user@localhost;

現在,blind_user@localhost可以執行SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES但不能從表本身中獲取任何私有數據。

引用自:https://dba.stackexchange.com/questions/93399