MySQL高级

mysql5.7与mysql8字符编码区别

5.7这个默认编码是Latin1而 8 则默认是utf8mb4 如果在5.7的环境下插入或者查看带有中文标识的数据会报错
如果开发条件下默认使用5.7环境那么一定要首先更改编码 linux环境下更改my.cnf ,windows下更改my.ini,更改完毕记得重启mysql - 》systemctl restart mysqld.server

在这里插入图片描述
这样操作后,以后每次创建表默认的字符集就都是utf8

mysql各级别的字符集

MySQL有四个级别的字符集和比较规则,分别是:
·服务器级别
·数据库级别
·标记别
·列级别

当我们更改server后database字符集也会改变
在这里插入图片描述

比较规则

字符集与比较规则都有着对应关系 比如 utf8 对应着 utf8_general_ci

utf8_general_ci 比 utf8_unicode_ci快,精准度较低,平常使用前者即可,如果有其它语言就使用后者
在这里插入图片描述

在这里插入图片描述

请求到响应的过程中的编码解码

在这里插入图片描述

SQL大小写规范

MySQL在Linux下数据库名、表名、列名、别名大小写:
1、数据库名、表名、表的别名、变量名、是严格区分大小写的
2、关键字、函数名称在SQL中不区分大小写
3、列明(或字段名)与列的别名(或字段别名)在所有的情况下均忽略大小写

在Windows下全部不区分大小写
在这里插入图片描述
所以我们平时创建数据库或者表或者写sql时建议关键字都大写,数据库或者表名创建的时候就不要大写,sql语句以分号结尾

用户密码修改

ALTER USER ‘zhangsan’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123’; #修改加密规则

ALTER USER ‘zhangsan’@‘localhost’ IDENTIFIED BY ‘123’ PASSWORD EXPIRE NEVER; #更新一下用户的密码

FLUSH PRIVILEGES; #刷新权限

用户与权限管理

MySQL用户分为root用户与普通用户来管理用户账号,mysql提供了很多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器,创建用户、删除用户、密码管理和权限管理等内容。
mysql数据库的安全性需要通过账户管理来保证

·基本登陆服务器

mysql -u root -p

·创建用户

– 注意这里实在mysql数据库中
select host,user from user

– 创建张三用户
create user 'zhangsan'@'localhost' IDENTIFIED by 'abc1238';
在这里插入图片描述
·修改用户
修改用户名(就是在mysql库中user表中修改字段) update user set user = ‘lisi’ where user = ‘zhangsan’
修改之后记住要 flush privileges (刷新权限)

·删除用户

同修改,只不过是 drop user 'zhangsan' 或者 delete user where user = 'zhangsan'

权限管理

就是MySQL允许你做你权限以内的事情,不可以越界,允许你查那你就不能改;只允许你从指定机器上连接就不许从其它机器上连接

权限列表
show PRIVILEGES
在这里插入图片描述

权限分布可能的设置的权限
表权限‘select’;‘insert’,‘update’,‘delete’;‘create’,‘drop’,‘grant’,‘references’,‘index’,‘alter’
列权限‘select’,‘insert’,‘update’,‘references’
过程权限‘rxecute’,‘alter’,‘routine’,‘grant’

授予权限的原则
权限控制主要是出于安全因素,因此需要遵循以下几个经验原则
1.只授予能满足需求的最小权限,放指用户干坏事。比如用户只需要查询,那就只给select权限
2.创建用户的时候限制用户的登录主机,一般是限制成指定ip或者内网ip段
3.为每个用户设置满足密码复杂度的密码
4.定期清理不需要的用户,回收权限或者删除用户

授予权限
给用户授权的方式有两种,分别是通过把`角色赋予用户给用户授权和直接给用户授权。用户是数据库的使用者,我们可以通过给用户授权访问数据库中资源的权限,来控制使用者对数据库的访问,消除安全隐患
授权方法
1.命令方式(我不喜欢)例如 grant all PRIVILEGES on * . * to ‘zhangsan’@’%’; #给所有数据库下所有的表权限给张三
2.直接通过可视化工具修改
在这里插入图片描述

可以看到张三用户啥权限都没有,所以只能靠到这一个,并且只能查,其他操作会报错
在这里插入图片描述

查看权限
SHOW GRANTS
或者show grants for current_uesr; 或者 show grants for current_uesr();
查看某个用户全局权限
SHOW GRANTS FOR 'user'@'主机地址';

权限回收:就是取消已经赋予用户的某些权限,收回用户不必要的权限可以在一定程度上保证系统的安全性;mmysql中使用REVOKE取消用户的某些权限,使用revoke收回权限之后,用户账号的记录将从db、host、tables_priv和columns_priv表中删除,但是用户账号记录仍然在user表中保存
注意:在将用户账户从user表中删除之前,应该回收响应用户的所有权限
老规矩,还是习惯之前的可视化工具操作

权限表:mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中。mysql数据库系统会根据这些权限表的内容为每个用户赋予相应的权限。这些权限表中最重要的是user表、db表、除此之外还有table_priv表、column_priv表和proc_priv表等。在mysql启动的时候,服务器将这些数据库表中权限信息内容读入内存。

表名描述
user用户账号及权限
global_grants动态全局授权
db数据库层级的权限
tables_priv表层级的权限
columns_priv列层级权限
procs_priv存储过程和函数权限
proxics_priv代理用户权限

以上表都可以去mysql库中查看

访问控制
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值