Mysql操作教学之用户权限管理,教会大家如何创建用户,修改权限,简单实用教学。(5)

前言

本篇文章主要讲解Mysql中的用户管理和权限管理,包括:创建、删除用户,授予、撤销权限等操作,通过多个案例帮助大家快速掌握这些知识点,以便更好的管理Mysql用户和权限。

1、用户管理

1.1 查看用户

  1. 查看所有用户

    select user, host from mysql.user;
    

  1. 查看当前登录用户

    select current_user();
    

    select user();
    

1.2 创建用户


1、基本语法

create user '用户名'@'主机名' identified by '密码';


2、常用创建用户示例

  1. 创建本地访问用户:

    create user '用户名'@'localhost' identified by '密码';
    
  2. 创建可从任何主机访问的用户(不推荐,有安全风险):

    create user '用户名'@'%' identified by '密码';
    
  3. 创建可从特定IP访问的用户:

    create user '用户名'@'192.168.1.100' identified by '密码';
    
  4. 创建可从IP段访问的用户:

    create user '用户名'@'192.168.1.%' identified by '密码';
    

1.3 修改用户密码

  1. 方法1:使用set password语句

    set password for '用户名'@'主机名' = password('新密码');
    
  2. 方法2:使用alter user语句(mysql 5.7.6及以上版本)

    alter user '用户名'@'主机名' identified by '新密码';
    
  3. 方法3:使用update直接修改mysql.user表

    update mysql.user set authentication_string=password('新密码') where user='用户名' and host='主机名';
    flush privileges; # 修改完后,刷新权限
    
  4. 修改当前登录用户密码

    set password = password('新密码');
    

注意事项

  1. 执行后可能需要flush privileges;刷新权限

  2. 密码建议使用强密码

  3. 主机名通常为’localhost’或’%'(允许任意主机连接)

例如修改用户’root’在本地登录的密码:

set password for 'root'@'localhost' = password('newpass123');

1.4 删除用户

  1. 删除单个用户

    drop user '用户名'@'主机名';
    

    例如:

    drop user 'testuser'@'localhost';
    

  1. 删除多个用户,用逗号隔开

    drop user 'user1'@'localhost', 'user2'@'%';
    

注意事项:

  1. 执行此命令需要具有mysql的root权限或足够的权限

  2. 删除用户前请确保该用户已不再需要

  3. 删除用户不会自动删除该用户创建的数据库对象

2、权限管理

2.1 给用户授予权限(grant)


1、基本语法

grant 权限类型 on 数据库对象 to 'username'@'host' [with grant option];


常见权限类型:

  • 数据操作select, insert, update, delete

  • 结构操作create, alter, drop, index

  • 管理权限all privileges, grant option, super

  • 其他权限execute(存储过程), trigger

权限作用范围:

作用范围示例说明
全局权限on *.*所有数据库的所有表
指定数据库on dbname.*某个数据库的所有表
指定表on dbname.tablename特定数据库的特定表
列级权限update(col1, col2)仅允许操作指定列
存储过程/函数on procedure funcname允许执行存储过程或函数

2、常用方法示例

  • 授予所有数据库的只读权限:

    grant select on *.* to 'user'@'localhost';
    
  • 授予特定数据库的全部权限:

    grant all privileges on dbname.* to 'user'@'%';
    
  • 授予多权限(select + insert + update):

    grant select, insert, update on dbname.* to 'user'@'192.168.1.%';
    
  • 授予列级权限:

    grant select, update(name, age) on dbname.employees to 'hr'@'%';
    
  • 允许用户授予权限给他人:

    grant select on dbname.* to 'admin'@'%' with grant option;
    

    如果在使用grant语句为某个用户授予权限时添加了with grant option子句,则表示该用户可以将自己拥有的权限授予其他人。

2.2 权限管理(查看、撤销)


1、查看用户权限

  1. 查看指定用户权限:

    show grants for '用户名'@'主机名';
    

    示例:

    show grants for 'username'@'host';
    
  2. 查看用户详细权限信息

    select * from mysql.user where user='用户名';
    
  3. 查看所有用户及其权限概况

    select * from mysql.user;
    

2、撤销权限

  1. 撤销指定类型权限(revoke):

    revoke 权限类型 on 数据库对象 from 'username'@'host';
    

    示例:撤销insert权限

    revoke insert on dbname.* from 'user'@'%';
    
  2. 撤销全部权限:

    revoke all privileges, grant option from 'username'@'host';
    

2.3 注意事项

  1. host字段的匹配规则:

    • localhost:仅允许本地连接

    • %:允许任意ip远程连接

    • 192.168.1.%:允许特定ip段连接

  2. mysql 8.0+ 变化:

    • 不再允许通过grant隐式创建用户,必须先使用create user
  3. 权限层级覆盖:

    • 全局权限 > 数据库权限 > 表权限 > 列权限
  4. 安全建议:

    • 避免使用all privilegeswith grant option

    • 按最小权限原则分配权限


通过以上命令可以完成mysql用户权限的全生命周期管理。建议通过show grants验证权限分配是否符合预期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盲敲代码的阿豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值