MySQL用户权限管理

在这里插入图片描述

一、用户
  1. 用户的概念:用户可以登陆数据库和管理数据库,因为数据库安全问题和业务需求我们需要使用权限管理。
  2. 定义用户:用户名@‘IP白名单’ (白名单指的是允许登陆MySQL的IP地址)
    • cooh@‘localhost’:cooh只能在本地使用socket登入MySQL
    • cooh@‘10.0.0.01’:cooh只能通过 1.0.0.01 远程登入MySQL
    • cooh@‘10.0.0.%’: cooh可以通过 1.0.0.xx 远程登入MySQL
    • cooh@‘10.0.0.0/255.255.254.0’:子网掩码认证登入MySQL
  3. 查询用户
    select user, host, authentication_string
    from user;
    
    userHostauthentication_string
    rootlocalhost*13E2C5B0B4E64D072DF491DE5255E17ED91EBC8F
    mysql.sessionlocalhost*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
    mysql.syslocalhost*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
  4. 创建用户
    -- 创建一个名为 user2 的用户密码为 mysql 不限定ip链接
    create user user2@'%' identified by 'mysql';
    
    注意:MySQL 8.0 版本必须先创建用户再授权 v5.0系列的版本创建和授权可以同时进行,需要注意的是新创建的用户如果没有指定权限默认只有登陆的权限。
  5. 修改用户
    -- 修改user2用户的密码为 A186
    alter user user2@'%' identified by 'A186';
    
  6. 删除用户
    -- 删除用户2
    drop user user2@'%';
    
二、权限管理
  1. 权限概念:限定用户对数据库对操作,表现方式为增删改查。

  2. 查看权限:show privileges;

    PrivilegeContextComment
    AlterTablesTo alter the table
    Alter routineFunctions,ProceduresTo alter or drop stored functions/procedures
    CreateDatabases,Tables,IndexesTo create new databases and tables
    Create routineDatabasesTo use CREATE FUNCTION/PROCEDURE
    Create temporary tablesDatabasesTo use CREATE TEMPORARY TABLE
    Create viewTablesTo create new views
    Create userServer AdminTo create new users
    DeleteTablesTo delete existing rows
    DropDatabases,TablesTo drop databases, tables, and views
    EventServer AdminTo create, alter, drop and execute events
    ExecuteFunctions,ProceduresTo execute stored routines
    FileFile access on serverTo read and write files on the server
    Grant optionDatabases,Tables,Functions,ProceduresTo give to other users those privileges you possess
    IndexTablesTo create or drop indexes
    InsertTablesTo insert data into tables
    Lock tablesDatabasesTo use LOCK TABLES (together with SELECT privilege)
    ProcessServer AdminTo view the plain text of currently executing queries
    ProxyServer AdminTo make proxy user possible
    ReferencesDatabases,TablesTo have references on tables
    ReloadServer AdminTo reload or refresh tables, logs and privileges
    Replication clientServer AdminTo ask where the slave or master servers are
    Replication slaveServer AdminTo read binary log events from the master
    SelectTablesTo retrieve rows from table
    Show databasesServer AdminTo see all databases with SHOW DATABASES
    Show viewTablesTo see views with SHOW CREATE VIEW
    ShutdownServer AdminTo shut down the server
    SuperServer AdminTo use KILL thread, SET GLOBAL, CHANGE MASTER, etc.
    TriggerTablesTo use triggers
    Create tablespaceServer AdminTo create/alter/drop tablespaces
    UpdateTablesTo update existing rows
    UsageServer AdminNo privileges - allow connect only
    上表为MySQL的所有权限和操作对象及介绍,我们设定权限的时候可以参考使用。
  3. 设置权限
    前提:给其它用户设置权限的前提是 root 或者你拥有权限并拥有 Grant option(将自己的权限赋予其他用户的权限)
    设置方式:

    1. ALL:指所有权限,前提是你使用的用户拥有的权限
    2. 权限1,权限2:可以指定具体的权限面向普通用户
    3. Grant option:给其它用户授权

    对象范围:

    • *.* 指数据库中所有的库和表
    • 库名.* 指定数据库中所有定表
    • 库名.表名 指定数据库中定指定表

    -- 将数据库new_data中的new表中的 new_title、new_content 查询权限给 user1
    grant select(new_title, new_content) on new_data.new to user1@'localhost';
    

    如果需要查询创建的权限需要到指定的表中查找:

    • User:存储创建的用户和密码包括全局实例级别管理权限设置
    • db:存储数据库级别的权限设置
    • tables_priv:存放表级别的设置权限
    • columns_priv:存放字段级别的设置权限
    • procs_priv:存放存储过程中的设置权限

    -- 查询列级别的权限
    select * from mysql.columns_priv;
    
    HostDbUserTable_nameColumn_nameTimestampColumn_priv
    localhostnew_datauser1newnew_content0000-00-00 00:00:00Select
    localhostnew_datauser1newnew_title0000-00-00 00:00:00Select
    上表为权限查询结果
  4. 回收权限
    回收权限使用 revoke 权限 on 范围 form 用户名@host

    -- 回收相关字段的权限
    revoke select(new_content, new_title) on new_data.new from user1@'localhost';
    

  1. 授权权限
    给 grant 添加 WITH GRANT OPTION 子句,表示该用户可以将自己拥有的权限授予其它用户。

    -- 例如:
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION 
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MySQL 用户权限管理包括两个方面:全局级别的权限和对象级别的权限。全局级别的权限控制用户对整个 MySQL 系统的操作,对象级别的权限控制用户对数据库、表、列等对象的操作。 在 MySQL 中,授权命令是 GRANT,撤销命令是 REVOKE。下面介绍一下如何授予用户列级别的权限: 1. 首先,登录 MySQL 数据库。 2. 使用 GRANT 命令授予用户对指定列的 SELECT 权限,例如: GRANT SELECT (column_name) ON database_name.table_name TO 'user'@'host'; 这里的 column_name 是要授予 SELECT 权限的列名,database_name 和 table_name 分别是数据库名和表名,user 和 host 是要授予权限用户和主机名。 3. 如果要授予用户对多个列的 SELECT 权限,可以使用逗号分隔列名,例如: GRANT SELECT (column1, column2, column3) ON database_name.table_name TO 'user'@'host'; 4. 如果要授予用户对所有列的 SELECT 权限,可以使用 * 代替列名,例如: GRANT SELECT (*) ON database_name.table_name TO 'user'@'host'; 5. 如果要授予用户对指定列的 INSERT、UPDATE 或 DELETE 权限,可以将 SELECT 替换为相应的命令。 6. 如果要撤销用户对指定列的权限,可以使用 REVOKE 命令,例如: REVOKE SELECT (column_name) ON database_name.table_name FROM 'user'@'host'; 这里的参数和 GRANT 命令相同。 总之,MySQL 用户权限管理是非常重要的,可以通过授权和撤销命令来精细地控制用户对数据库、表、列等对象的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值