当前位置:   article > 正文

MySQL--视图和用户管理

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 '密码'];

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

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

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

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

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

flush privileges;

比如我们想给'chika'@'localhost'这个用户test_db这个数据库的所有权限,示例:

grant all on test_db.* to 'chika'@'localhost';

 

 回收权限

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/804305
推荐阅读
相关标签
  

闽ICP备14008679号