您的位置:首页 > 数据库 > SQL

MySQL中实现DROP USER if EXISTS `test`,即创建新用户时检测用户是否存在

2017-11-22 19:32 656 查看
最近在工作中碰到这样一个问题,使用数据库脚本更新数据库,检测用户是否存在,不存在的话创建,分配库的权限,存在则跳过;

第一个想到的就是类似删除表的判断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

这样就变相实现了检测用户是否存在的问题,感觉有点重复,大家有好的建议可以留言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql
相关文章推荐