Mysql
MySQL - 是否可以分配權限來計算數據庫中的表數,而無需對單個表授予權限?
作為腳本的一部分,我試圖計算特定 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
但不能從表本身中獲取任何私有數據。