MySQL用户和权限管理

  1. 查看所有用户及其权限

    SELECT * FROM mysql.user\G; #( \G 在命令行中格式化显示)
    
  2. 查看当前用户权限

    SHOW GRANTS;
    -- 或
    SHOW GRANTS FOR CURRENT_USER;
    -- 或
    SHOW GRANTS FOR CURRENT_USER();
    
  3. 查看某个用户的权限

    SHOW GRANTS FOR username@host;  # 用户名@主机 
    
  4. 增加用户
    语法

    CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
    

    示例

    CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';
    FLUSH PRIVILEGES;        #创建完用户及权限后,需要使用该命令刷新权限
    

    注意

    • 必须拥有mysql数据库的全局CREATE USER权限或拥有INSERT权限。
    • 只能创建用户,不能赋予权限。
    • 用户名,注意引号:如 ‘user_name’@‘192.168.1.1’
    • 密码必须加引号
  5. 删除用户

    DROP USER '用户名'@'主机'
    
  6. 重命名用户

    RENAME USER '旧用户名'@'旧主机' TO '新用户名'@'新主机';
    
  7. 设置修改密码

    1. 使用SET PASSWORD命令
      SET PASSWORD = PASSWORD('密码')    -- 为当前用户设置密码
      SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码')    -- 为指定用户设置密码
      flush privileges;  											-- 需要执行刷新权限
      
    2. 使用grant指令(在授权时修改密码)
      GRANT SELECT ON 数据库名.数据表名 TO 用户名@主机 IDENTIFIED BY '新密码' WITH GRANT OPTION;
      
    3. 运行mysqladmin脚本文件
      该文件一般在mysql安装目录下的bin目录中。进入该目录,根据以下两种具体情况输入命令(只有root用户有这个权限)。
      (1)用户尚无密码
      mysqladmin -u 用户名 password 新密码;
      
      (2)用户已有密码
      mysqladmin -u 用户名 -p password 新密码;
      
      [root@node00 ~]# mysqladmin -u test -p password HfdD-12345;
      Enter password: 
      mysqladmin: [Warning] Using a password on the command line interface can be insecure.
      Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
      
      注意
        更改密码时候一定要使用PASSWORD函数(mysqladmin 和 GRANT 两种方式不用写,会自动加上)。
  8. 分配权限
    语法

    GRANT 权限列表 ON 库名.表名 TO '用户名'@'主机' IDENTIFIED BY '密码' [WITH GRANT OPTION];
    

    示例

    GRANT all privileges on *.* to ‘test’@'localhost' identified by 'password' with grant option;
    -- 或
    GRANT all privileges on *.* to ‘test’@'%' identified by 'password';
    flush privileges;         -- 记得授权后一定要刷新权限
    

    注意

    1. with grant option 表示该用户可以将自己拥有的权限授权给别人,可以不添加
    2. all privileges 表示所有权限
    3. *.* 表示所有库的所有表
    4. % 表示任何主机地址。
    5. 可以使用grant重复给用户添加权限,进行权限叠加
  9. 刷新权限

    FLUSH PRIVILEGES
    
  10. 撤消权限
    语法

    REVOKE 权限列表 ON 数据库名.数据表名 FROM 用户名@主机;
    REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名@主机;    -- 撤销所有权限
    

    示例

    revoke drop on *.* from test@localhost;#回收drop权限
    

    注意
      其实GRANT语句在执行的时候,如果权限表中不存在目标账号,则创建账号;
      如果已经存在,则执行权限的新增。
      usage权限不能被回收,也就是说,REVOKE用户权限并不能删除用户

  11. 权限层级

    要使用GRANT或REVOKE,您必须拥有GRANT OPTION权限,并且您必须拥有您正在授予或撤销的权限。

    1. 全局层级
      适用于一个给定服务器中的所有数据库
      GRANT ALL ON *.*;
      REVOKE ALL ON *.*;
      
      用于授予和撤销全局权限。
    2. 数据库层级
      适用于一个给定数据库中的所有目标
      GRANT ALL ON db_name.*;
      REVOKE ALL ON db_name.*;
      
      用于授予和撤销数据库权限。
    3. 表层级
      适用于一个给定表中的所有列
      GRANT ALL ON db_name.table_name;
      REVOKE ALL ON db_name.table_name;
      
      用于授予和撤销表权限。
    4. 列层级
      适用于一个给定表中的单一列
      当使用REVOKE时,您必须指定与被授权列相同的列。
  12. 权限列表

    GRANT和REVOKE的允许静态权限

    权限说明
    ALL [PRIVILEGES]除GRANTOPTION之外所有简单权限
    ALTER允许使用ALTER TABLE
    ALTER ROUTINE允许使用更改或删除存储过程
    CREATE允许使用创建新数据库和表的语句
    CREATE ROLE允许使用该CREATE ROLE语句 (8.0版本)
    CREATE ROUTINE允许使用CREATE创建存储过程和函数的语句
    CREATE TABLESPACE允许使用创建,更改或删除表空间和日志文件组的语句
    REATE TEMPORARY TABLES允许使用该CREATE TEMPORARY TABLE 语句创建临时表
    CREATE USER允许使用的ALTER USER,CREATE ROLE, CREATE USER, DROP ROLE, DROP USER, RENAME USER和 REVOKE ALL PRIVILEGES语句
    CREATE VIEW允许使用该CREATE VIEW语句
    DELETE允许从数据库中的表中删除行
    DROP允许使用DROP 删除现有数据库,表和视图的语句
    DROP ROLE允许使用该DROP ROLE 语句 (8.0版本)
    EVENT允许使用EVENT 调度程序创建,更改,删除或显示事件的语句
    EXECUTE允许使用执行存储过程和函数的语句
    FILE允许使用LOAD DATA和 SELECT … INTO OUTFILE语句和 LOAD_FILE()函数
    GRANT OPTION允许您向其他用户授予或撤消您自己拥有的权限
    INDEX允许使用CREATE INDEX和DROP INDEX的语句
    INSERT允许使用INSERT将数据插入数据库中的表
    LOCK TABLES允许对您拥有SELECT权限的表使用LOCKTABLES
    PROCESS允许使用SHOW [FULL] PROCESSLIST
    PROXY允许一个用户模拟或被称为另一个用户
    REFERENCES创建外键约束需要REFERENCES父表的权限
    RELOAD允许使用该FLUSH 语句
    REPLICATION CLIENT允许使用的SHOW MASTER STATUS,SHOW SLAVE STATUS和SHOW BINARY LOGS语句
    REPLICATION SLAVE用于复制型从属服务器(从主服务器中读取二进制日志事件)
    SELECT允许使用SELECT
    SHOW DATABASES显示所有数据库
    SHOW VIEW允许使用SHOW CREATE VIEW
    SHUTDOWN允许使用SHUTDOWN 和RESTART语句,mysqladmin shutdown命令和 mysql_shutdown()函数
    SUPER8.0版本中 SUPER已弃用
    TRIGGER启用触发器操作
    UPDATE允许在数据库中的表中更新行
    USAGE代表"无权限"

    GRANT和REVOKE的允许动态权限(8.0版本)

    权限说明
    PPLICATION_PASSWORD_ADMIN双密码功能
    AUDIT_ADMIN启用审核日志配置
    BACKUP_ADMIN允许执行LOCK INSTANCE FOR BACKUP语句并访问Performance Schema log_status表
    BINLOG_ADMIN通过PURGE BINARY LOGS和 BINLOG语句启用二进制日志控制
    BINLOG_ENCRYPTION_ADMIN启用设置系统变量binlog_encryption,激活或取消激活二进制日志文件和中继日志文件的加密
    CONNECTION_ADMIN允许使用KILL statement或mysqladmin kill命令来终止属于其他帐户的线程
    ENCRYPTION_KEY_ADMIN启用InnoDB加密密钥轮换
    FIREWALL_ADMIN允许用户管理任何用户的防火墙规则
    FIREWALL_USER使用户能够更新自己的防火墙规则
    GROUP_REPLICATION_ADMIN使该帐户能够启动和停止组复制
    ERSIST_RO_VARIABLES_ADMIN
    REPLICATION_SLAVE_ADMIN使帐户能够连接到主服务器,启动和停止复制,以及使用CHANGE MASTER TO和CHANGE REPLICATION FILTER语句
    RESOURCE_GROUP_ADMIN启用资源组管理:创建,更改和删除资源组; 并将线程和语句分配给资源组
    RESOURCE_GROUP_USER允许将线程和语句分配给资源组
    ROLE_ADMIN允许GRANT语句中使用WITH ADMIN OPTION子句
    SESSION_VARIABLES_ADMIN使用户能够设置会话值
    SET_USER_ID允许在执行视图或存储程序时设置有效的授权ID
    SYSTEM_VARIABLES_ADMIN运行时启用系统变量和更改全局事务特征
    VERSION_TOKEN_ADMIN允许执行版本标记用户定义的函数
    XA_RECOVER_ADMIN允许执行 XA RECOVER语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值