zoukankan      html  css  js  c++  java
  • mysql 创建用户, 分配权限, 删除用户

    通过create user 命令来创建用户, 有两种方式:(只介绍通过 create user 命令, 直接往user表中插入数据的方式,这里就不说了)

    创建用户的同时, 指定用户可登录的主机和密码

    create user 'test_user'@'%' identified by "123"; 
    create user 'test_user'@'localhost' identified by "123"; 
    create user 'test_user'@'127.0.0.1' identified by "123"; 
    
    
    grant all privileges on test_db.* to 'test_user'@'%';
    grant select,update,delete,insert,drop on test_db.* to 'test_user'@'%';
    grant all privileges on test_db.* to 'test_user'@'%' identified by '1112';
    grant all privileges on test_db.* to 'test_user'@'%' with grant option;
    

    首先解释一下创建用户的命令参数:

    • 'test_user'是用户名
    • @ 后面是指定的登录主机,'localhost' '127.0.0.1'表示只能在 本地登录;'%'表示只能在远程主机登录
    • identified by 后面是密码
    • 友情提示: 上述命令中,用户名, 登录主机, 密码, 建议都使用 引号包起来, 防止不必要的麻烦

    分配权限的命令参数:

    • grant 是分配权限的命令
    • all privileges 指所有的权限, 也可以像第二条那样, 指定某些权限给用户
    • test_db.* 表示 test_db库的所有表, 可以指定某个表 test_db.table1, 或者所有数据库的所有表, *.*
    • identified by 指定密码, 如果不指定, 默认用创建用户的时候的密码, 或者可以不同的权限,给不同的密码, 或者不同的登录主机给不同的密码, 都是可以的
    • with grant option 如果带着这个参数, 表示这个被分配权限的用户, 还可以把自己的权限分配给其他人
    • 用grant语句创建权限是不需要再手工刷新授权表的,因为它已经自动刷新了。

    上面前三条命令只能同时使用一条, 因为create user 不能创建同名的用户

    那么问题就来了, 假设通过第一条命令创建了用户, 那么这个用户就只能在远程主机上登录, 而不能在本地登录, 如果在本地登录, 会报这个错误:ERROR 1045 (28000): Access denied for user 'card_test1'@'localhost' (using password: YES)

    出现这个错误有很多种情况, 据我的了解, 可能是:

    1. 用户没有在本地登录的权限, 也就是'card_test1'@'localhost' 这个用户不存在, 因为只存在'card_test1'@'%' 这个用户
    2. 密码不对

    为了解决这个问题, 可以通过第二种方式, 也就是create user 的时候, 不分配登录主机这些参数

    只创建用户, 不分配主机

    1. create user test_user;
    2. create user test_user identified by "123";
    
    3. grant all privileges on test_db.* to 'test_user'@'%' identified by "1234";
    4. grant all privileges on test_db.* to 'test_user'@'localhost'identified by "1235";
    

    上面的命令, 1,2 执行一条, 单纯的创建用户, 或者同时分配密码;

    然后, 3,4 两条都可以执行, 这样就能让test_user 这个用户, 既能在本地登录, 又能在远程登录, 如果 grant的时候, 设置不同的密码, 还能使在不同主机登录的同一个用户, 使用不同的密码

    取消用户权限

    使用 revoke 语句

    revoke all on test_db.* from 'test_user'@'localhost';
    

    这个命令就取消了 test_user 这个用户, 在本地登录时的全部权限

    删除用户

    drop user 'test_user'@'%';
    drop user 'test_user'@'localhost';
    

    修改指定用户的密码

    update mysql.user set password=password('new_passwd') where User='test_user' and Host='%';
    

    创建用户给用户创建权限或者修改权限, 都可以通过直接操作 mysql.user表; 注意直接操作表的话, 需要用flush privileges;命令 刷新权限

  • 相关阅读:
    ASP.NET MVC中多种ActionResult用法总结
    jQuery中异步操作对象Deferred
    jQuery中bind方法和live方法区别解析
    深入理解Javascript中this, prototype, constructor
    SQL及常见的三种类型注释
    SQLServer的两个日期相减(间隔)datediff函数
    SQLServer查询进程与死锁语句
    SqlServer获取当前日期的详细写法
    SQL中 Decode 和 Sign 语法的简单用法
    数据仓库模型之CDM、LDM与PDM的区别
  • 原文地址:https://www.cnblogs.com/zhang-can/p/12053815.html
Copyright © 2011-2022 走看看