zoukankan      html  css  js  c++  java
  • MySQL的权限管理

    MySQL的权限管理是啥?简单的来讲管理用户在能什么地方能做什么事。也就是说管理用户在哪个ip能连接,连接后用户能否创建删除数据库,能否增删改查数据库的表等等 而当客户端连接到服务器时,MySQL访问控制有两个阶段:

    • 连接验证:连接到MySQL数据库服务器的客户端需要有一个有效的用户名和密码。此外,客户端连接的主机必须与MySQL授权表中的主机相匹配。
    • 请求验证:当连接成功建立后,对于客户端发出的每个语句,MySQL会检查客户端是否具有足够的权限来执行该特定语句。 MySQL能够检查数据库,表和字段级别的权限。

    创建用户并授权

    格式:grant all privileges on db.table to user@'host' identified by "password" with grant option;
    

    其中:

    • all privileges:表示所有权限
    • db.table: 权限针对哪个数据库哪个表,如果是*.*就是所有数据库所有表
    • user@'host': 前者表示会用户名,后者表示只能从哪个ip,ip段(比如:'192.168.31.*'),域名或者任何地方('%') 连接
    • identified by:指定用户的密码
    • with grant option: 指于用户能否将自己的权限授予给其他人。

    创建client这个用户,只能用172.17.0.3这个 ip 连接,并只给 simple_db 数据库的(SELECT)查询的权限,不能授权给其他人,可以用下面的命令完成。

    grant select on simple_db.* to client@'172.17.0.3' identified by "OhMyGod2018,";
    

    刷新权限

    flush privileges;
    

    注意8.0后的版本不能用直接用这条语句了,要分解成两条语句才行

    CREATE USER `client`@`172.17.0.3` IDENTIFIED BY 'passowrd';
    grant select on simple_db.* to client@'172.17.0.3';
    

    更多的权限说明可以看文章的末尾

    查看用户信息

    select User,Host from mysql.user where User = "client";
    
        +--------+------------+
        | User   | Host       |
        +--------+------------+
        | client | 172.17.0.3 |
        +--------+------------+
        1 row in set (0.00 sec)
    

    查看用户权限

    show grants for 'client'@'172.17.0.3';
    
        +--------------------------------------------------------+
        | Grants for client@172.17.0.3                           |
        +--------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'client'@'172.17.0.3'            |
        | GRANT SELECT ON `simple_db`.* TO 'client'@'172.17.0.3' |
        +--------------------------------------------------------+
        2 rows in set (0.00 sec)
    

    权限叠加

    为client添加update权限

    grant update on simple_db.* to client@'172.17.0.3';
    flush privileges;
    

    再查看

    show grants for 'client'@'172.17.0.3';
    
        +----------------------------------------------------------------+
        | Grants for client@172.17.0.3                                   |
        +----------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'client'@'172.17.0.3'                    |
        | GRANT SELECT, UPDATE ON `simple_db`.* TO 'client'@'172.17.0.3' |
        +----------------------------------------------------------------+
        2 rows in set (0.00 sec)
    

    收回用户权限

    revoke update on `simple_db`.* from 'client'@'172.17.0.3' ;
    
    show grants for 'client'@'172.17.0.3';
    
        +--------------------------------------------------------+
        | Grants for client@172.17.0.3                           |
        +--------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'client'@'172.17.0.3'            |
        | GRANT SELECT ON `simple_db`.* TO 'client'@'172.17.0.3' |
        +--------------------------------------------------------+
        2 rows in set (0.00 sec)
    

    重命名用户

    rename user 'client'@'172.17.0.3' to 'zgj'@'172.17.0.3';
    

    查看用户信息

    select User,Host from mysql.user where User = "client";
    
    Empty set (0.00 sec)
    
    select User,Host from mysql.user where User = "zgj";
    
        +------+------------+
        | User | Host       |
        +------+------------+
        | zgj  | 172.17.0.3 |
        +------+------------+
        1 row in set (0.00 sec)
    

    修改密码

    SET PASSWORD FOR 'zgj'@'172.17.0.3' = PASSWORD('OhMyGod2018.');
    

    或者是

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'OhMyGod2018.';
    

    删除用户

    drop user 'zgj'@'172.17.0.3';
    

    再查看用户信息

    select User,Host from mysql.user where User = "zgj";
    
    Empty set (0.00 sec)
    

    权限表

    权限 权限级别 权限说明
    CREATE 数据库、表或索引 数据库、表或索引
    DROP 数据库或表 删除数据库或表权限
    REFERENCES 数据库或表
    ALTER 更改表,比如添加字段、索引等
    DELETE 删除数据权限
    INDEX 索引权限
    INSERT 插入权限
    SELECT 查询权限
    UPDATE 更新权限
    CREATE VIEW 视图 创建视图权限
    SHOW VIEW 视图 查看视图权限
    ALTER ROUTINE 存储过程 更改存储过程权限
    CREATE ROUTINE 存储过程 创建存储过程权限
    EXECUTE 存储过程 执行存储过程权限
    FILE 服务器主机上的文件访问 文件访问权限
    CREATE TEMPORARY TABLES 服务器管理 创建临时表权限
    LOCK TABLES 服务器管理 锁表权限
    CREATE USER 服务器管理 创建用户权限
    PROCESS 服务器管理 查看进程权限
    RELOAD 服务器管理 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限
    REPLICATION CLIENT 服务器管理 复制权限
    REPLICATION SLAVE 服务器管理 复制权限
    SHOW DATABASES 服务器管理 查看数据库权限
    SHUTDOWN 服务器管理 关闭数据库权限
    SUPER 服务器管理 执行kill线程权限

    参考链接

  • 相关阅读:
    运行 npm run dev 不能自动打开浏览器
    npm run dev 报错:Strings must use singlequote 的解决方法
    new和this
    new Object()、Object.create()、{}三种对象创建方式的区别
    Python 详解修饰器 附带 js使用修饰器
    Python
    react项目使用axios和Charles模拟数据接口
    react切换隐藏或显示状态(包含过渡动画)
    react里使用ref的几种方法
    js对象转数组
  • 原文地址:https://www.cnblogs.com/jojo-feed/p/10171192.html
Copyright © 2011-2022 走看看