跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL 数据库管理基础:视图操作与用户权限管理

MySQL 视图基于查询定义虚拟表,简化数据访问并提升安全性,但需注意其对基表的直接影响及性能限制。用户管理涉及 root 安全策略,通过 mysql.user 表存储凭证,支持创建、删除及密码修改操作,不同版本间语法有所差异。权限控制通过 grant 和 revoke 实现最小授权原则,结合 flush privileges 确保规则即时生效,有效隔离普通用户与核心数据。

热情发布于 2026/3/29更新于 2026/6/1217 浏览
MySQL 数据库管理基础:视图操作与用户权限管理

MySQL 数据库管理基础:视图操作与用户权限管理

1、视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

1.1、基本使用

注意:此处以经典的 scott 数据库为例,内部包含 dept、emp、salgrade 表。

1.1.1、创建视图
create view 视图名 as select 语句;

案例

先在 emp 和 dept 表中查询 ename 和对应的 dname:

select ename, dname from emp, dept where emp.deptno = dept.deptno;

执行结果如下:

+--------+------------+
| ename  | dname      |
+--------+------------+
| SMITH  | RESEARCH   |
| ALLEN  | SALES      |
| WARD   | SALES      |
| JONES  | RESEARCH   |
| MARTIN | SALES      |
| BLAKE  | SALES      |
| CLARK  | ACCOUNTING |
| SCOTT  | RESEARCH   |
| KING   | ACCOUNTING |
| TURNER | SALES      |
| ADAMS  | RESEARCH   |
| JAMES  | SALES      |
| FORD   | RESEARCH   |
| MILLER | ACCOUNTING |
+--------+------------+

将该查询封装成视图,便于后续复用:

-- 将 ename 和 dname 的查询结果创建成视图
create view myview as 
select ename, dname from emp, dept where emp.deptno = dept.deptno;

-- 查看视图的数据
select * from myview;
1.1.2、修改视图

通过视图更新数据时,实际上是在修改基表。这意味着修改了视图,对基表数据有影响。

-- 将 dname=RESEARCH 的记录修改为 zhangsan
update myview  ename  dname;


   myview;


 ename, dname  emp, dept  emp.deptno  dept.deptno;
set
=
'zhangsan'
where
=
'RESEARCH'
-- 查看视图数据
select
*
from
-- 查看基表数据验证
select
from
where
=

反之,修改了基表,对视图也有影响。视图只是保存了查询逻辑,数据始终来源于基表。

1.1.3、删除视图
drop view 视图名;

1.2、视图规则和限制

  • 与表一样,必须唯一命名(不能出现同名视图或表名)。
  • 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响。
  • 视图不能添加索引,也不能有关联的触发器或者默认值。
  • 视图可以提高安全性,但必须具有足够的访问权限才能操作。
  • order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by,那么该视图中的 order by 将被覆盖。
  • 视图可以和表一起使用。

2、用户管理

如果我们只能使用 root 用户,这样存在安全隐患。这时,就需要使用 MySQL 的用户管理来分配不同权限。

2.1 用户

2.1.1、用户信息

MySQL 中的用户信息都存储在系统数据库 mysql 的 user 表中。

use mysql;
select host, user, authentication_string from user;

字段解释:

  • host:表示这个用户可以从哪个主机登陆,如果是 localhost,表示只能从本机登陆。
  • user:用户名。
  • authentication_string:用户密码通过 password 函数加密后的字符串。
  • _priv:用户拥有的权限。
2.1.2、创建用户

语法:

create user '用户名'@'登陆主机/ip' identified by '密码';

案例:

create user 'jkl'@'localhost' identified by '123456';
select user, host, authentication_string from user;

此时可以看到新创建的 jkl 用户已存在于 user 表中。

2.1.3、删除用户

语法:

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

示例:

-- 尝试直接删除用户名,会报错,因为默认是%@%
drop user jkl; 
-- ERROR 1396 (HY000): Operation DROP USER failed for 'jkl'@'%'

-- 指定主机名删除
drop user 'jkl'@'localhost';

删除成功后,再次查询 user 表即可确认。

2.1.4、修改用户密码

自己改自己密码:

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

root 用户修改指定用户的密码:

set password for '用户名'@'主机名'=password('新的密码');

注意:上面的语句需要在 MySQL 5.7.6 版本以下 才能使用。

后序版本能够使用的修改密码语法:

alter user 'username'@'host' identified by '新的密码';

2.2、数据库的权限

MySQL 提供了细粒度的权限控制列表,包括 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP 等。

2.2.1、给用户授权

刚创建的用户没有任何权限,需要显式授权。

语法:

grant 权限列表 on 库。对象名 to '用户名'@'登陆位置' [identified by '密码'];

说明:

  • 权限列表,多个权限用逗号分开,例如 grant select, delete, create on ...。
  • grant all [privileges] on ... 表示赋予该用户在该对象上的所有权限。
  • *.* : 代表本系统中的所有数据库的所有对象。
  • 库.* : 表示某个数据库中的所有数据对象。
  • identified by 可选。如果用户存在,赋予权限的同时修改密码;如果该用户不存在,则是创建用户。

案例:

假设 root 账号下有一个 test 数据库,包含 account、student、user 表。

-- 终端 A (root)
mysql> use test;
mysql> grant select on test.* to 'jkl'@'localhost';
Query OK, 0 rows affected (0.01 sec)

-- 终端 B (jkl)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+

mysql> use test;
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| account        |
| student        |
| user           |
+----------------+

mysql> select * from account;
+----+------+--------+
| id | name | balance|
+----+------+--------+
| 2  | 李四 | 321.00 |
| 3  | 王五 | 5432.00|
+----+------+--------+

-- 没有删除权限
mysql> delete from account;
ERROR 1142 (42000): DELETE command denied to user 'jkl'@'localhost' for table 'account'

特定用户现有查看权限:

show grants for 'jkl'@'localhost';

注意:如果发现赋权限后,没有生效,执行如下指令刷新权限:

flush privileges;
2.2.2、回收权限

语法:

revoke 权限列表 on 库。对象名 from '用户名'@'登陆位置';

示例:

-- 回收 jkl 对 test 数据库的所有权限
mysql> revoke all on test.* from 'jkl'@'localhost';
Query OK, 0 rows affected (0.00 sec)

-- 切换回 jkl 账号查看
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+

此时 test 数据库对 jkl 不可见,权限已成功回收。

目录

  1. MySQL 数据库管理基础:视图操作与用户权限管理
  2. 1、视图
  3. 1.1、基本使用
  4. 1.1.1、创建视图
  5. 1.1.2、修改视图
  6. 1.1.3、删除视图
  7. 1.2、视图规则和限制
  8. 2、用户管理
  9. 2.1 用户
  10. 2.1.1、用户信息
  11. 2.1.2、创建用户
  12. 2.1.3、删除用户
  13. 2.1.4、修改用户密码
  14. 2.2、数据库的权限
  15. 2.2.1、给用户授权
  16. 2.2.2、回收权限
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 大型推理模型发展方向:利用 LLM 加强推理的调查报告
  • 大模型应用开发基础:从原理到 LangChain 实战
  • C++11 核心特性详解:列表初始化、右值引用与移动语义
  • Neo4j GraphRAG:使用 Python 包集成 RAG 与知识图谱
  • Stable Diffusion 基础教程:部署、精准控制与风格训练
  • Jetson 平台 OpenClaw 联动 Ollama 与 llama.cpp 部署大模型配置
  • LLM 微调实战:使用 Code-Llama 训练自定义代码数据集
  • Z-Image i2L 本地 AI 绘画工具快速入门与参数调优
  • 鸿蒙webview开发中web内部网络请求访问资源跨域问题,客户端解决方案
  • 微信小程序跳转外部链接:WebView 与复制链接方案
  • .NET 序列化与反序列化实战:XML、JSON、二进制及 SOAP
  • AI 绘画在商业设计中的应用与版权探讨
  • 2026 年高校 AIGC 检测政策汇总
  • JavaScript 基础核心知识点梳理
  • ComfyUI 深度解析:高性能 AI 绘画工作流实践
  • 基于 SpringBoot+Vue 的流浪动物管理系统设计与实现
  • 基于 Higress 将 REST API 转换为 MCP Server 工具
  • Qwen3-ASR-1.7B 实战案例:新闻发布会实时语音转写与关键人物发言提取
  • 十大 AI 论文降重与智能写作工具评测
  • Stable Diffusion 技术详解:LoRA 模型与 ControlNet 协同应用

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online