视图
这里的视图跟之前事务里面的read view没有任何关系。
创建视图
create view 视图名 as select语句;
其实就是在select语句前加上就可以了。
创建视图其实就是mysql在内存上帮我们创建了一张表,然后将数据插入到这个表中。
如果我们修改视图里的数据,会对基表产生影响。反之,如果我们修改了基表,也会对这个视图产生影响。
删除视图
drop view 视图名;
总结:
视图与表一样,必须唯一命名(不能出现同名视图或表名) 。
视图不能添加索引,也不能有关联的触发器或者默认值。
视图可以提高安全性,必须具有足够的访问权限。
视图可以和表一起使用。
用户管理
用户
如果我们只用root用户,那么会存在安全隐患。
在MYSQL中,所有的用户都存储在mysql数据库中的user表里面
有些字段比如Host,表示这个用户能以那种方式登录mysql,这里是本地。
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 ... -- 表示赋予该用户在该对象上的所有权限
如果发现赋权后没有生效,可以执行刷新指令
flush privileges;
回收权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
跟授权的语法一样,我们同样可以一次回收多个,或者全部回收。