zoukankan      html  css  js  c++  java
  • MySQL中实现DROP USER if EXISTS `test`,即创建新用户时检测用户是否存在

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

     版权声明:本文为博主原创文章,欢迎大家转载,注明出处即可。有问题可留言,会尽快回复,欢迎探讨! https://blog.csdn.net/m0_37684310/article/details/78606426

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

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

  • 相关阅读:
    oracle用户被锁
    Docker入门
    物化视图
    MySQL报错:Packets larger than max_allowed_packet are not all
    ORA-01555 快照过旧
    mysql授予权限
    CentOS7.4安装部署KVM虚拟机
    前端面试题收藏
    CoffeeScript 学习笔记
    spring学习笔记(四)
  • 原文地址:https://www.cnblogs.com/pejsidney/p/10221118.html
Copyright © 2011-2022 走看看