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

  • 相关阅读:
    STM32 硬件I2C 到底是不是个坑?
    memory cache 和 disk cache
    希尔排序为什么不稳定
    17-18专业课
    fread和fseek的用法
    浅析alsa声卡驱动snd_interval结构体openmin,openmax和integer含义
    动态存储区、静态存储区、堆和栈的区别
    【专家坐堂Q&A】在 petalinux-config 中选择外部来源时,可将符号链路添加内核来源目录树
    模型文件后缀介绍
    @RestController注解
  • 原文地址:https://www.cnblogs.com/pejsidney/p/10221118.html
Copyright © 2011-2022 走看看