我市强化属地网站建设,展示型网站设计案例,网站建设工,wordpress模板自适应W...Y的主页 #x1f60a;
代码仓库分享 #x1f495; 目录
视图
基本使用
视图规则和限制
用户管理 用户
用户信息
创建用户
删除用户
修改用户密码 数据库的权限
给用户授权
回收权限 视图
视图是一个虚拟表#xff0c;其内容由查询定义。同真实的表一样
代码仓库分享 目录
视图
基本使用
视图规则和限制
用户管理 用户
用户信息
创建用户
删除用户
修改用户密码 数据库的权限
给用户授权
回收权限 视图
视图是一个虚拟表其内容由查询定义。同真实的表一样视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表基表的数据变化也会影响到视图。
基本使用
创建视图
create view 视图名 as select语句 案例
create view v_ename_dname as select ename, dname
from EMP, DEPT where EMP.deptnoDEPT.deptno;
select * from v_ename_dname order by 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 |
-------------------- 修改了视图对基表数据有影响
select emp.ename,dept.dname,dept.deptno from emp,dept where
emp.deptnodept.deptno order by dname;
update v_ename_dname set enameTEST where enameCLARK;
select * from EMP where enameCLARK;
select * from EMP where enameTEST;
修改了基表对视图有影响
mysql update EMP set deptno10 where enameJAMES; -- 修改基表
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql select * from v_ename_dname where enameJAMES;
-----------------
| ename | dname |
-----------------
| JAMES | RESEARCH | 视图中的数据也发生了变化
-----------------
删除视图
drop view 视图名
视图规则和限制
与表一样必须唯一命名不能出现同名视图或表名 创建视图数目无限制但要考虑复杂查询创建为视图之后的性能影响 视图不能添加索引也不能有关联的触发器或者默认值 视图可以提高安全性必须具有足够的访问权限 order by 可以用在视图中但是如果从该视图检索数据 select 中也含有 order by ,那么该视图 中的 order by 将被覆盖 视图可以和表一起使用
用户管理
如果我们只能使用root用户这样存在安全隐患。这时就需要使用MySQL的用户管理。 用户
用户信息
MySQL中的用户都存储在系统数据库mysql的user表中
mysql use mysql;
Database changed
mysql select host,user,authentication_string from user;
---------------------------------------------------------------------
| host | user | authentication_string |
---------------------------------------------------------------------
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
---------------------------------------------------------------------
--可以通过desc user初步查看一下表结构
字段解释
host 表示这个用户可以从哪个主机登陆如果是localhost表示只能从本机登陆 user 用户名 authentication_string 用户密码通过password函数加密后的 *_priv 用户拥有的权限
创建用户
语法
create user 用户名登陆主机/ip identified by 密码;
案例
mysql create user whblocalhost identified by 12345678;
Query OK, 0 rows affected (0.06 sec)
mysql select user,host,authentication_string from user;
---------------------------------------------------------------------
| user | host | authentication_string |
---------------------------------------------------------------------
| root | % | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| whb | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 | --新增用
户
---------------------------------------------------------------------
4 rows in set (0.00 sec)
-- 此时便可以使用新账号新密码进行登陆啦
--备注可能实际在设置密码的时候因为mysql本身的认证等级比较高一些简单的密码无法设置会爆出
如下报错
-- ERROR 1819 (HY000): Your password does not satisfy the current policy
requirements
-- 解决方案https://blog.csdn.net/zhanaolu4821/article/details/93622812
--查看密码设置相关要求SHOW VARIABLES LIKE validate_password%;
-- 这个大家下来自己玩玩
--关于新增用户这里需要大家注意不要轻易添加一个可以从任意地方登陆的user。
删除用户
语法
drop user 用户名主机名
示例
mysql select user,host,authentication_string from user;
---------------------------------------------------------------------
| user | host | authentication_string |
---------------------------------------------------------------------
| root | % | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| whb | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 |
---------------------------------------------------------------------
4 rows in set (0.00 sec)
mysql drop user whb; --尝试删除
ERROR 1396 (HY000): Operation DROP USER failed for whb% -- 直接给个用户名
不能删除它默认是%表示所有地方可以登陆的用户
mysql drop user whblocalhost; --删除用户
Query OK, 0 rows affected (0.00 sec)
mysql select user,host,authentication_string from user;
---------------------------------------------------------------------
| user | host | authentication_string |
---------------------------------------------------------------------
| root | % | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
---------------------------------------------------------------------
3 rows in set (0.00 sec)
修改用户密码
语法
自己改自己密码set passwordpassword(新的密码);
--自己下来试试root用户修改指定用户的密码set password for 用户名主机名password(新的密码) 数据库的权限
MySQL数据库提供的权限列表
给用户授权
刚创建的用户没有任何权限。需要给用户授权。 语法:
grant 权限列表 on 库.对象名 to 用户名登陆位置 [identified by 密码] 说明 权限列表多个权限用逗号分开
grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
*.* : 代表本系统中的所有数据库的所有对象表视图存储过程等 库.* : 表示某个数据库中的所有数据对象(表视图存储过程等) identified by可选。 如果用户存在赋予权限的同时修改密码,如果该用户不存在就是创建用户
注意如果发现赋权限后没有生效执行如下指令flush privileges;
回收权限
语法 revoke 权限列表 on 库.对象名 from 用户名登陆位置 示例
-- 回收whb对test数据库的所有权限
--root身份终端A
mysql revoke all on test.* from whblocalhost;
Query OK, 0 rows affected (0.00 sec)
--whb身份终端B
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| test |
--------------------
2 rows in set (0.00 sec)
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
--------------------
1 row in set (0.00 sec)