MySQL如何查詢某個表是否存在

來源:互聯網
上載者:User

常用的方法如下:

  1. SHOW TABLES LIKE '%tb_bp_d_case%';

  2. select TABLE_NAME from INFORMATION_SCHEMA.TABLES whereTABLE_SCHEMA='dbname' and TABLE_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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.