Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • JavaSE

  • JavaEE

  • Linux

  • MySQL

    • 数据库简介
    • 数据库基础
    • 多表查询
    • 视图
    • 备份
    • MySQL 存储过程和函数
    • 触发器
    • 事务
    • 存储引擎
    • 索引
    • 用户与权限
      • 权限表
        • user表
        • db表
        • tables_priv 表
        • columns_priv 表
        • procs_priv 表
      • 角色管理
    • 锁
    • MyCat 中间件
  • NoSQL

  • Python

  • Python模块

  • 机器学习

  • 设计模式

  • 传智健康

  • 畅购商城

  • 博客项目

  • JVM

  • JUC

  • Golang

  • Kubernetes

  • 硅谷课堂

  • C

  • 源码

  • 神领物流

  • RocketMQ

  • 短链平台

  • 后端
  • MySQL
Iekr
2023-11-10
目录

用户与权限

# 用户与权限

-- 创建用户
create user 用户名 [IDENTIFIED BY 'password'] [,用户2 [IDENTIFIED BY 'password'],...];
-- 修改用户名
update mysql.user set user='用户名' where user='用户名';
FLUSH PRIVILEGES; -- 修改完后需要刷新权限才能使用新的用户名
-- 修改密码
alter user user() IDENTIFIED BY 'new_password';
-- 修改当前用户密码
set password='new_password';
-- 查看所有用户
select * from mysql.user;
-- 删除用户
drop user 用户1 [,用户2,...];
delete from mysql.user where host='主机名' and User='用户名';
FLUSH PRIVILEGES; -- 使用delete删除需要刷新权限才生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

权限管理

-- 查看当前数据库所有权限
show privileges;

GRANT 权限1,权限2,...
ON 数据库名称.表名称
TO 用户名1[IDENTIFIED BY '密码'][,用户名2[IDENTIFIED BY '密码',...]]
[WITH with_option [with_option]...];
1
2
3
4
5
6
7
  • *:表示当前数据库中的所有表;
  • *.* :表示所有数据库中的所有表;
  • db_name.* :表示某个数据库中的所有表, db_name 指定数据库名;
  • db_name.tbl_name :表示某个数据库中的某个表或视图, db_name 指定数据库名, tbl_name 指定表名或视图名;
  • db_name.routine_name :表示某个数据库中的某个存储过程或函数, routine_name 指定存储过程名或函数名;
  • TO 子句:如果权限被授予给一个不存在的用户, MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户设置密码。
-- 查看用户权限
show grants;
show grants for 用户名@主机地址;
-- 回收权限
revoke 权限1,权限2,... on 数据名.表名 from 用户1[,用户2,...];
-- 回收所有权限
revoke all privileges on *.* from 用户1[,用户2,...];

1
2
3
4
5
6
7
8

# 权限表

MySQL 在安装时会自动创建一个名为 mysql 的数据库, mysql 数据库中存储的都是用户权限表。权限表名有 user 、 db 、 tables_priv 、 columns_priv 、 procs_priv

# user 表

用户列

image-20231110083702429

权限列

image-20231110083733349

安全列

image-20231110083745008

资源控制列

image-20231110083801609

# db 表

用户列

image-20231110083834814

# tables_priv 表

tables_priv 表用来对单个表进行权限设置

image-20231110083851108

# columns_priv 表

columns_priv 表用来对单个数据列进行权限设置

image-20231110084047579

# procs_priv 表

procs_priv 表可以对存储过程和存储函数进行权限设置

image-20231110084113894

# 角色管理

引入角色的目的是便于管理拥有相同权限的用户。设定恰当的权限,可以确保数据的安全性。角色与权限的关系如下图所示。

image-20231110084253319

-- 创建角色
create role 角色1[@主机名] [,角色2[@主机名],...]; -- 主机名可以省略。省略后默认为 % 
1
2

创建角色之后,默认这个角色是没有任何权限的,根据需要给角色授权

GRANT 权限1,权限2,...
0N 数据库名称.表名称
TO 角色名[@主机名];
-- 给指定用户添加角色
grant 角色1 [,角色2,...] to 用户1 [,用户2,...];

-- 查看角色的权限
show grant for 角色名;

-- 回收角色的权限
revoke 权限1,权限2,...
0N 数据库名称.表名称
from 角色名;
-- 撤销用户角色
revoke 角色 from 用户;
-- 删除角色
drop role 角色1 [,角色2,...];

-- 激活用户角色
set default role all to 用户名@主机名;
-- 激活所有角色
set global activate_all_roles_on_login=ON;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
编辑 (opens new window)
上次更新: 2025/01/01, 10:09:39
索引
锁

← 索引 锁→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式