博客
关于我
mysql的grant用法
阅读量:790 次
发布时间:2023-02-13

本文共 1852 字,大约阅读时间需要 6 分钟。

MySQL权限管理是数据库管理员(DBA)和系统管理员(SYSADMIN)日常工作的重要组成部分。权限管理主要包括用户的认证和授权两个方面,认证是确定用户是否允许连接到数据库服务器,授权则是决定用户在登录后是否拥有执行特定操作的权限。本文将详细介绍MySQL中的GRANT和REVOKE命令,用于管理用户权限。

GRANT命令的基本用法

GRANT命令用于赋予用户特定的数据库权限,语法格式如下:

GRANT privileges ON database_object TO user [IDENTIFIED BY "password"] [WITH GRANT OPTION];

其中:

  • privileges:指定要赋予的权限,支持多个权限用逗号分隔。
  • database_object:指定权限作用的数据库、表、列等。
  • user:指定可以使用这些权限的用户。
  • IDENTIFIED BY "password":可选项,用于指定用户的口令。
  • WITH GRANT OPTION:可选项,用于指定用户是否可以进一步分配权限。

常见权限类型

MySQL权限主要包括以下几类:

  • 数据库/表/列权限

    • Alter:允许修改已有数据表的结构。
    • Create:允许创建新的数据库或数据表。
    • Delete:允许删除数据表记录。
    • Drop:允许删除数据表或数据库。
    • Index:允许创建或删除索引。
    • Insert:允许插入新记录。
    • Select:允许查询数据。
    • Update:允许修改已有记录。
  • 全局管理权限

    • File:允许读写MySQL服务器上的文件。
    • Process:允许查看或终止其他用户的服务线程。
    • Reload:允许重载访问控制表。
    • Shutdown:允许关闭MySQL服务。
  • 特殊权限

    • ALL:允许执行所有操作(与root用户类似)。
    • USAGE:仅允许登录,不授予权限。
  • 权限作用范围

    权限的作用范围可以非常灵活:

    • *.*:权限适用于所有数据库和数据表。
    • dbName.*:权限适用于指定数据库下的所有数据表。
    • dbName.tblName:权限仅适用于指定数据库和数据表。
    • 可以通过在权限后面添加圆括号内的列列表,限制权限到特定数据列。

    用户权限的指定

    用户权限不仅与登录名相关,还与连接的主机名或IP地址相关。可以使用%通配符,例如:

    GRANT Select ON testdb.* TO common_user@'%';

    这条命令允许common_user用户从任何主机登录,并对testdb数据库下的所有数据表执行SELECT操作。

    示例:创建和授权数据库管理员

    以下命令创建并赋予一个名为dba的用户对testdb数据库的全权限:

    GRANT ALL PRIVILEGES ON testdb.* TO dba@localhost WITH GRANT OPTION;

    此外,如果需要允许dba用户从任意主机登录,可以修改命令为:

    GRANT ALL PRIVILEGES ON testdb.* TO dba@'%';

    撤销权限

    使用REVOKE命令可以撤销已赋予的权限,语法格式类似GRANT命令,只需将TO改为FROM

    REVOKE ALL PRIVILEGES ON testdb.* FROM dba@localhost;

    注意事项

  • 权限更改生效条件:GRANT和REVOKE命令执行后,权限更改通常需要用户重新登录数据库才能生效。
  • 权限分配管理:为了安全起见,数据库权限最好由DBA统一管理,避免直接或间接授权给非管理员用户。
  • 权限复杂度:使用WITH GRANT OPTION时,需谨慎,因为这可能导致权限被滥用。
  • 命令示例

  • 赋予dba用户对testdb数据库的读写权限:
  • GRANT Select, Insert, Update, Delete ON testdb.* TO dba@localhost;
    1. 创建一个名为new_user的用户,并赋予其对newdb数据库的全权限:
    2. GRANT ALL PRIVILEGES ON newdb.* TO new_user@'%' IDENTIFIED BY "newpass";
      1. 撤销testdb数据库所有权限:
      2. REVOKE ALL PRIVILEGES ON testdb.* FROM root@localhost;

        通过合理运用GRANT和REVOKE命令,DBA可以精确地管理数据库用户权限,确保系统安全和稳定运行。

    转载地址:http://qpdfk.baihongyu.com/

    你可能感兴趣的文章
    mysql的sql语句基本练习
    查看>>
    Mysql的timestamp(时间戳)详解以及2038问题的解决方案
    查看>>
    mysql的util类怎么写_自己写的mysql类
    查看>>
    MySQL的xml中对大于,小于,等于的处理转换
    查看>>
    mysql的下载安装
    查看>>
    Mysql的两种存储引擎详细分析及区别(全)
    查看>>
    mysql的临时表简介
    查看>>
    MySQL的主从复制云栖社区_mysql 主从复制配置
    查看>>
    MySQL的事务隔离级别实战
    查看>>
    mysql的优化策略有哪些
    查看>>
    MySQL的使用
    查看>>
    mysql的全文检索的方法
    查看>>
    MySQL的函数
    查看>>
    mysql的函数DATE_ADD()
    查看>>
    mysql的函数操作
    查看>>
    mysql的分类排名_mysql高低排名
    查看>>
    Mysql的分表设计方法 (水平分表和垂直分表)
    查看>>
    mysql的分页查询limit关键字
    查看>>
    MySql的创建数据表、约束、外键约束的创建修改删除、级联操作
    查看>>
    MySQL的删除修改的实验目的_基础篇 - 数据库及表的修改和删除
    查看>>