MySQL--视图和用户管理

视图

这里的视图跟之前事务里面的read view没有任何关系。

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

创建视图

create view 视图名 as select语句;

其实就是在select语句前加上就可以了。

创建视图其实就是mysql在内存上帮我们创建了一张表,然后将数据插入到这个表中。

如果我们修改视图里的数据,会对基表产生影响。反之,如果我们修改了基表,也会对这个视图产生影响。

删除视图

drop view 视图名;

总结:

视图与表一样,必须唯一命名(不能出现同名视图或表名)

创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响。

视图不能添加索引,也不能有关联的触发器或者默认值。

视图可以提高安全性,必须具有足够的访问权限。 

order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by , 那么该视图
中的 order by 将被覆盖

视图可以和表一起使用。

用户管理 

用户

如果我们只用root用户,那么会存在安全隐患。

在MYSQL中,所有的用户都存储在mysql数据库中的user表里面

有些字段比如Host,表示这个用户能以那种方式登录mysql,这里是本地。

*_priv 用户拥有的权限。

User表示的是用户名。

 往下翻还有一个字段是authentication_string,表示的是经过加密后的用户密码。

我们可以这样查询

 我们新建一个用户

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

如果登录主机/ip为 '%',则说明可以从任意主机上登录,实际开发中非常不建议这样用,我们仅测试。 

删除用户

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

修改密码:
1.修改自己的密码

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

2.root用户修改指定用户的密码

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

注意:

在linux命令行下执行

vim /etc/my.cnf

如果我们设置了--skip-grant-tables。那么选项启动时,它会跳过权限表的加载,这意味着任何用户都可以无密码连接到 MySQL 服务器,并拥有对所有数据库的完全访问权限。

也就是说我们可能无法创建新用户或者是直接修改密码。我们可以在mysql库中的user表中,直接设置好root的密码,然后把这个选项注释掉,然后重启mysqld,用我们设置好的密码登录,然后就可以创建新用户了。

选中好mysql库后,可以执行以下指令在表中修改root的密码

DATE user SET authentication_string=PASSWORD('新密码') WHERE User='root';

或者建议直接用

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

 这还可以直接帮你检测你的密码是否符合标准。

另外还有,在mysql5.7及以上版本,默认用这种方式修改密码至少得包含字母,数字,符号三种,如果我们密码的复杂度不符合mysql的规定,那么我们后续登录上去将无法执行大部分操作。

密码可以类似这种 ‘Admin123!’。

或者我们可以降低mysql规定的密码复杂度

SET GLOBAL validate_password_policy = 'LOW';
  • LOW:密码长度至少为8位。
  • MEDIUM:密码长度至少为8位,且必须包含数字、小写字母、大写字母和特殊字符中的至少三种。
  • STRONG:密码长度至少为8位,且必须包含数字、小写字母、大写字母和特殊字符。
  • 0:禁用密码策略。

数据库的权限

部分权限

新创建的用户是没有任何权限的,需要给新用户授权

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

 可以一次授予一个权限,或者多个权限,或者所有权限

grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
*.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)

.* : 表示某个数据库中的所有数据对象 ( 表,视图,存储过程等 )

identified by 可选。 如果用户存在,赋予权限的同时修改密码 , 如果该用户不存在,就是创建用户

如果发现赋权后没有生效,可以执行刷新指令

flush privileges;

 回收权限

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

跟授权的语法一样,我们同样可以一次回收多个,或者全部回收。

相关推荐

  1. 06.MySQL用户权限管理

    2024-07-09 23:02:04       45 阅读
  2. MySQL用户权限管理深入指南

    2024-07-09 23:02:04       28 阅读
  3. MySQL】——用户权限管理(一)

    2024-07-09 23:02:04       22 阅读
  4. MySQL学习记录——십삼 视图用户、权限管理

    2024-07-09 23:02:04       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 23:02:04       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 23:02:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 23:02:04       43 阅读
  4. Python语言-面向对象

    2024-07-09 23:02:04       54 阅读

热门阅读

  1. 实例分割:深度学习在图像识别中的突破

    2024-07-09 23:02:04       22 阅读
  2. el-table 树状表格展开及折叠

    2024-07-09 23:02:04       18 阅读
  3. pytorch LLM训练过程中的精度调试实践

    2024-07-09 23:02:04       18 阅读
  4. 【TORCH】神经网络权重初始化和loss为inf

    2024-07-09 23:02:04       18 阅读
  5. k8s-第九节-命名空间

    2024-07-09 23:02:04       21 阅读
  6. 【Mybatis面试题】

    2024-07-09 23:02:04       22 阅读
  7. 环境快照:精通Conda中的conda env export命令

    2024-07-09 23:02:04       20 阅读
  8. Linux下网络编程-简易poll服务器和客户端

    2024-07-09 23:02:04       20 阅读
  9. ClickHouse表引擎概述

    2024-07-09 23:02:04       18 阅读