MYSQL视图

文章目录

  • MYSQL视图
  • 1. 基本使用
  • 2. 视图规则和限制
  • 用户管理
  • 1. 用户
  • 2. 数据库的权限

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

1. 基本使用

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

案例

create view v_ename_dname as select ename, dname
from EMP, DEPT where EMP.deptno=DEPT.deptno;
select * from v_ename_dname;
+--------+------------+
| ename  | dname      |
+--------+------------+
| CLARK  | ACCOUNTING |
| KING   | ACCOUNTING |
| MILLER | ACCOUNTING |
| SMITH  | RESEARCH   |
| JONES  | RESEARCH   |
| SCOTT  | RESEARCH   |
| ADAMS  | RESEARCH   |
| FORD   | RESEARCH   |
| ALLEN  | SALES      |
| WARD   | SALES      |
| MARTIN | SALES      |
| BLAKE  | SALES      |
| TURNER | SALES      |
| JAMES  | SALES      |
+--------+------------+
  • 修改了视图,对基表数据有影响
update v_ename_dname set dname='sales' where ename='CLARK';
select * from EMP where ename='CLARK';
  • 修改了基表,对视图有影响
mysql> update EMP set deptno=20 where ename='JAMES'; -- 修改基表
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from v_ename_dname where ename='JAMES';
+-------+----------+
| ename | dname |
+-------+----------+
| JAMES | RESEARCH | <== 视图中的数据也发生了变化
+-------+----------+
  • 删除视图
drop view 视图名;

2. 视图规则和限制

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

用户管理

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

1. 用户

1.1 用户信息:

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

mysql> select host,user,authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+---------------+-------------------------------------------+

字段解释:

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

1.2 创建用户

语法:

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

案例:

mysql> create user 'wolf'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> select host,user, password from user where user='wolf';
+-----------+-------+-------------------------------------------+
| host      | user  | password                                  |
+-----------+-------+-------------------------------------------+
| localhost | wolf | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------+-------------------------------------------+

1.3 删除用户

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

示例:

mysql> drop user 'wolf';
ERROR 1396 (HY000): Operation DROP USER failed for 'wolf'@'%' <= 直接给个用户名,不能删除,它默认是%,表示所有地方可以登陆的用户
mysql> drop user 'wolf'@'localhost';
Query OK, 0 rows affected (0.00 sec)

1.4 修改用户密码

语法:

  • 自己改自己密码
set password=password('新的密码');
  • root用户修改指定用户的密码
set password for '用户名'@'主机名'=password('新的密码');
set password for 'litao'@'localhost'=password('abcdefg');

2. 数据库的权限

MySQL数据库提供的权限列表:

2.1 给用户授权:

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

语法:

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

说明:

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

案例:

mysql> show databases; -- wolf账户看不到mytest库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)-- root 给 litao 赋予账户查询mytest库的DEPT表的权限
mysql> grant select on mytest.DEPT to 'wolf'@'localhost';
Query OK, 0 rows affected (0.03 sec)mysql> show databases; -- wolf账户可以看到mytest库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mytest             |
| test               |
+--------------------+
3 rows in set (0.01 sec)
mysql> use mytest; -- 切换到mytest库
mysql> select * from DEPT; -- 查询 DEPT表
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
| 10     | sales      | NEW YORK |
| 20     | RESEARCH   | DALLAS   |
| 30     | SALES      | CHICAGO  |
| 40     | OPERATIONS | BOSTON   |
+--------+------------+----------+
4 rows in set (0.00 sec)
mysql> delete from DEPT; -- 没有删除权限
ERROR 1142 (42000): DELETE command denied to user 'litao'@'localhost' for table 'DEPT'

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

flush privileges;

2.2 回收权限

语法:

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

示例:

-- 回收wolf对数据库的所有权限
revoke all on mytest.DEPT from 'wolf'@'localhost';

MYSQL视图用户管理相关推荐

  1. MySQL笔记 - 用户管理

    转自: https://segmentfault.com/a/1190000014856560 MySQL笔记 - 用户管理 tags: 数据库 MySQL 用户管理 学习目标 MySQL是一个多用户 ...

  2. mysql 视图用户_MySQL视图,存储过程,用户管理

    1. 视图 一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL. # 创建视图 crea ...

  3. MySql的用户管理权限

    登陆连接 1.127.0.0.1/其他远程数据库 mysql -u admin -p -h 127.0.0.1 -P 3306 -D t_user 注:-u 代表用户,-p代表密码 ,-h代表host ...

  4. mysql数据库用户管理及日志文件

    用户管理 实际应用: MySQL数据库是信息系统中非常重要的一个环节, 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.所以通常由管理员创建不同的管理账户,分配不同的操作权限, ...

  5. jsp mysql修改密码_Servlet+JSP+MySQL实现用户管理模块之七、实现用户信息更新和重置密码...

    实现用户信息更新和重置密码功能 如果用户信息很多的时候,感觉这项实现起来比较麻烦的.因为要考虑用户哪些信息需要更新哪些不需要更新,就必须先更原来的信息比对.呵呵,当然如果考虑到多个数据库表间的操作的话 ...

  6. hadoop设置用户权限_No.9 MySQL之用户管理与权限设置

    一.MySQL中用户的书写方式:用户名@'登录地址' chongge@'localhost'  本地登录的用户 chongge@'127.0.1.1'  远程登录的用户 chongge@'127.0. ...

  7. MySQL(用户管理,常用sql语句,数据库备份恢复,MySQL调优,恢复误操作数据)...

    一.MySQL用户管理. 一个MySQL数据库里可以跑多个库,总不能给所有人的程序员root用户,则可以给他们单独的用户访问数据库. 创建用户:(grant all on *.* to 'user1' ...

  8. MySQL数据库用户管理操作(二)

    文章目录 一.数据表操作 1.克隆表 1.1 先克隆表,再克隆数据 1.2 克隆表的数据并创建表 2.清空表 2.1 delete清空表 2.2 truncate清空表 2.3 drop.trunca ...

  9. Mysql之用户管理

    目录 一,Mysql中6种常用的约束/规则 1,主键和外键的关系 1.1,创建主表 1.3 为主表vs01添加一个主键约束,主键名建议以pk开头 1.4 为从表vs02表添加外键,并将vs02表的hb ...

最新文章

  1. 【学习笔记】Silverlight框架:Jounce(4)——事件通信
  2. python的数据类型和变量
  3. 判断一个数是不是2的指数幂
  4. 读取一个文件,获取其中出现次数最多的前五个字符以及次数
  5. Deepin中设置文件或文件夹权限
  6. 章磊回答: 姚期智提出的百万富翁难题被破解? 多方安全计算MPC到底是个什么鬼?
  7. C++总结笔记(五)——构造函数和析构函数
  8. python随机读取字符_利用python3随机生成中文字符的实现方法
  9. Windows Workflow HOL学习笔记(十二):创建状态基工作流
  10. inner join 重复数据_pandas数据合并菜谱
  11. 各个平台下 Perl 源码安装教程
  12. 引用 乐嘉写给所有女人的话,男人千万别错过!
  13. 懵逼树上懵逼果:探索二分法搜索
  14. typecho与WordPress博客程序评测及推荐
  15. onTouchEvent事件不敏感
  16. MySQL 必知必会系列(五)
  17. 微信小程序--动态时间实现
  18. java中关键字缺省(default)
  19. 马彩未解禁:中国互联网损失2000亿
  20. [生存志] 第109节 秦始皇初玩叠人塔

热门文章

  1. 200819C阶段一C++面向对象的编程思想
  2. Cortex‐M3-存储器映射
  3. Subversion的权限控制
  4. 跨主机使用 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(77)
  5. storm 动态设置并发度
  6. 在EO中获取某字段基于表的列名
  7. find命令的技巧和一些例子
  8. 几个基本概念辨析:流敏感,路径敏感和上下文敏感
  9. 笨方法学python之import sys与from sys import argv的区别
  10. 牛客 - 牛牛的最大兴趣组(思维+数论)