博客
关于我
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日志管理学习笔记
    查看>>
    mysql日志问题定位实用命令
    查看>>
    MySQL日期时间函数大全
    查看>>
    mysql时间相减的问题
    查看>>
    mysql时间表示和计算
    查看>>
    MySQL是如何做容器测试的?
    查看>>
    mysql更改数据库表utf-8_修改mysql数据库为 utf-8
    查看>>
    mysql更改表引擎INNODB为MyISAM的方法总结
    查看>>
    mysql更新一个表里的字段等于另一个表某字段的值
    查看>>
    Mysql更新时间列只改日期为指定日期不更改时间
    查看>>
    MySQL更新锁(for update)摘要
    查看>>
    mysql更新频率_MySQL优化之如何了解SQL的执行频率
    查看>>
    mysql替换表的字段里面内容
    查看>>
    MySQL最多能有多少连接
    查看>>
    MySQL最大建议行数 2000w,靠谱吗?
    查看>>
    MySQL有哪些锁
    查看>>
    MySQL服务器安装(Linux)
    查看>>
    mysql服务器查询慢原因分析方法
    查看>>
    mysql服务无法启动的问题
    查看>>
    MySQL杂谈
    查看>>