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

  • 相关阅读:
    Modbus软件开发实战指南 之 开发自己的Modbus Poll工具
    Divide Two Integers-不用'/' '*' '%'操作实现整数的除法
    用最少的砝码称出1到100克的物品
    Binary Tree Inorder Traversal-非递归实现中序遍历二叉树
    leetcode Word Break-单词划分
    位运算题目
    leetcode Single Number II
    leetcode 4Sum
    leetcode 3Sum Closest
    Unique Binary Search Trees-计算表示相同序列的不同BST个数
  • 原文地址:https://www.cnblogs.com/pejsidney/p/10221118.html
Copyright © 2011-2022 走看看