常用的方法如下:
-
SHOW TABLES LIKE '%tb_bp_d_case%';
-
select
TABLE_NAME
fromINFORMATION_SCHEMA
.TABLES
whereTABLE_SCHEMA
='dbname' andTABLE_NAME
='tablename' ;
需要考慮的是權限問題
mysql 的授權分為 5 層:全局層級,數據庫層級,表層級,列層級,子程序層級;
SHOW TABLES,並不在priv_type列表中,也就是說只要能連接到mysql上都可以執行。
如果用戶權限是 表層級或者是列層級 的,那么 show tables; 只能看到有權限的表名。
如果 查詢 INFORMATION_SCHEMA 庫的話,也是一樣的,只能查詢到有權限的表。
如果說一個用戶的權限不是數據庫層級以上的話就會導致結果不可信賴。
類似下邊的授權就不用擔心這個問題(priv_type隨便什么都行):
grant priv_type on dbName.* to ..... --數據庫層級
--or
grant priv_type on *.* to ..... --全局層級
==============================
如果上邊寫的沒看明白,那么繼續看下邊一個例子:
如:數據庫有 test1,test2 ,...
test1 庫中有表,abc ,ab ,abb, a 四個表
授權語句:
grant insert on test1.a to user1@"%"Identifiedby"user1"
當用 user1 連接后,選擇 test1 數據庫后執行:
show tables; -- 結果只要 a 一個表。同樣的 show tables like "a%"; --結果也只有表 a
select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='test1';--結果也是只要一個表a