• 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

  • 相关阅读:
    Java中二进制数与整型之间的转换
    校招小白机考入坑之从键盘输入java的各种数据类型
    使用flume抓取tomcat的日志文件下沉到kafka消费
    Scala学习笔记之Actor多线程与线程通信的简单例子
    通过流的方式操作hadoop的API
    Windows环境下使用kafka单机模式
    scrapy
    python 虚拟环境
    celery使用
    redis install
  • 原文地址:https://www.cnblogs.com/pejsidney/p/10221118.html
Copyright © 2020-2023  润新知