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
这样就变相实现了检测用户是否存在的问题,感觉有点重复,大家有好的建议可以留言。
第一个想到的就是类似删除表的判断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
这样就变相实现了检测用户是否存在的问题,感觉有点重复,大家有好的建议可以留言。
相关文章推荐
- mysql5.7基础 create database if not exists... 判断数据库是否存在 若不存在则创建
- mysql5.7基础 drop database if exists... 删除数据库前判断它是否存在
- MySQL查询优化:LIMIT 1避免全表扫描【如判断用户是否存在select * from users where username='123' and passwd='123' limit 1】
- 使用jquery+ajax方式实现用户注册时,检测用户名是否存在
- 使用jquery+ajax方式实现用户注册时,检测用户名是否存在
- 关于mysql的用户管理,笔记 1、创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localh
- 毕业设计(十)---用DWR实现 代替AJAX 用户注册检测用户名是否已经存在
- shell基础之利用shell检测目录是否存在,不存在提示让用户创建目录
- 毕业设计(十)---用DWR实现 代替AJAX 用户注册检测用户名是否已经存在
- ajax实现检测当前注册用户是否存在
- 用户注册(检测用户名是否存在)
- Android 检测目录是否存在,不存在则创建
- 获取文件扩展名、 文件名、文件名不包括扩展名,检测文件夹、文件是否存在、创建文件夹,检测文件夹状态、检查文件名是否符合要求
- struts1+js 实现注册一个用户时 此用户名是否存在
- Ajax检测注册用户是否存在
- Ajax的应用:用过Ajax来实现不刷新页面的情况下判断用户是否存在
- 利用邮件对象实现发送QQ日志以及检测用户是否开通SMTP功能
- Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
- jquery ajax 检测用户注册时用户名是否存在
- Ajax检测注册用户是否存在