MySQL中實現DROP USER if EXISTS `test`,即創建新用戶時檢測用戶是否存在
最近在工作中碰到這樣一個問題,使用數據庫腳本更新數據庫,檢測用戶是否存在,不存在的話創建,分配庫的權限,存在則跳過;
第一個想到的就是類似刪除表的判斷DROP TABLE if EXISTS `test_table`;
用DROP USER if EXISTS `test`;會報語法錯誤,ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if EXISTS `test`' at line 1;
然后查找資料,據說MySQL 5.7以上版本支持此語法,創建新用戶時檢測用戶是否存在怎么做,最終得到答案:
-- 賦予testUser用戶對所有表都沒權限,即只有查看的權限,不能增刪改查,而用戶不存在則創建
GRANT USAGE ON *.* TO 'testUser'@'%' identified by '123456';
--刪除用戶
drop user testUser@'%';
flush privileges;
--再創建用戶,將mysqltest數據庫的權限給testUser用戶
create user testUser@'%' identified by '123456';
grant all on mysqltest.* to testUser;
flush privileges;
總體邏輯就是:先創建再刪除,再創建,
1.當初次插入數據時,先創建用戶testUser,再刪除,然后再創建用戶testUser
2.當更新數據庫時,先修改testUser用戶的權限,然后刪除,再創建用戶testUser