• MySQL的用户管理


    1.MySQL 的权限语法

    如果只使用 root 用户,就存在安全隐患,这点在 Linux 系统本身就体现出来了,MySQL 也有类似的问题,因此也有自己的账户管理。

    我们前面铺垫过一个事情,MySQL 本质是在管理一些表的相关文件,文件在 Linux 中怎么区分用户?那不就是调用 Linux 本身的文件权限等接口么?

    # MySQL 的用户表
    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +---------------------------+
    | Tables_in_mysql           |
    +---------------------------+
    | user                      |
    +---------------------------+
    31 rows in set (0.00 sec)
    
    mysql> select * from user\G
    # ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    MySQL 的用户本身也是以一个表的形式来管理的,而创建用户实际上就是插入用户的名字、权限、密码插入到 user 中(最简单粗暴的做法也是这样的,但是一般没必要)。

    之后要提到的相关命令,往深处也是对 user 表做增删查改。

    # MySQL 用户语法
    # (1)重新加载授权表
    FLUSH PRIVILEGES;
    # (2)创建用户
    CREATE USER 'user_name'@'登录主机/ip' IDENTIFIED BY 'password'; # 如果是 Windows 是不行的,Windows 的是私有 IP,设置为具体 IP 是没有意义的,因此有些时候会使用 %,但是一般也不使用 %
    # (3)删除用户
    DROP USER 'user_name'@'登录主机/ip';
    # (4)修改用户的密码
    ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
    UPDATE USER SET authentication_string=password('new_password') where user='user_name'; 
    SET password=password('new_password'); # 只设置当前用户密码
    SET PASSWORD for 'user_name'@'主机名'=password('new_password');
    # (5)查看当前用户
    SELECT USER();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    补充:MySQL 对密码的管理是会进行明文加密的。

    2.MySQL 的权限列表

    权限列名作用
    CREATECreate_priv数据库、表或索引
    DROPDrop_priv数据库或表
    GRANT OPTIONGrant_priv数据库、表或索引权限的授权
    REFERENCESReferences_priv数据库或表
    ALTERAlter_priv
    DELETEDelete_priv
    INDEXIndex_priv
    INSERTInsert_priv
    SELECTSelect_priv
    UPDATEUpdate_priv
    CREATE VIEWCreate_view_priv视图
    SHOW VIEWShow_view_priv视图
    ALTER ROUTINEAlter_routine_priv存储的程序
    CREATE ROUTINECreate_routine_priv存储的程序
    EXECUTEExecute_priv存储的程序
    FILEFile_priv服务器主机上的文件访问
    CREATE TEMPORARY TABLESCreate_tmp_table_priv临时表
    LOCK TABLESLock_tables_priv表的锁定
    CREATE USERCreate_user_priv用户帐号
    PROCESSProcess_priv进程信息
    RELOADReload_priv服务器的重载
    REPLICATION CLIENTRepl_client_priv复制客户端
    REPLICATION SLAVERepl_slave_priv复制从库
    SHOW DATABASESShow_db_priv数据库列表
    SHUTDOWNShutdown_priv服务器的关闭
    SUPERSuper_priv超级权限

    刚刚创建的用户没有任何权限,需要 root 使用 GRANT 权限列表 ON 库.对象名 TO '用户名'@'登陆位置' [IDENTIFIED BY '密码'] 来赋予。

    • GRANT:权限列表,用多个权限用逗号分开

      # 权限列表
      grant select on ...
      grant select, delete, create on ....
      grant all [privileges] on ... # 表示赋予该用户在该对象上的所有权限
      
      • 1
      • 2
      • 3
      • 4
    • *.* :代表本系统中的所有数据库的所有对象(表,视图,存储过程等)

    • 库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)

    • IDENTIFIED BY :可选,如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就会创建用户并且设置对应的密码

    而可以使用 REVOKE 权限列表 ON 库.对象名 FROM 'user_name'@'登陆位置';回收权限。

  • 相关阅读:
    Kotlin作用域函数引发的遮蔽问题
    ExtJS-介绍(Introduction to Ext JS)
    Redis查找并删除key
    深入理解参数-@Param和 对象作为参数重要
    Wireshark 用命令行分析数据包
    Vue3的Teleport:Teleport是Vue3的一个新功能,它允许我们将子组件渲染到父组件以外的地方,这在处理模态框、弹出窗口等情况时非常有用
    工欲善其事必先利其器(Windows)
    taskAffinity详解
    Vue的mixin(混入)
    apk反编译和重新打包流程
  • 原文地址:https://blog.csdn.net/m0_73168361/article/details/136534993