【*】在Linux下登录mysql数据库的命令
mysql -u root -p'lby'
- -u:后面是是用户名
- -p:后面是密码
【*】授予一个拥有所有权限的远程连接用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root1234%' WITH GRANT OPTION;
flush PRIVILEGES #授予权限之后需要刷新权限
- GRANT ALL PRIVILEGES :授予所有权限
- ON *.*:on后面是数据库
- TO 'root'@'%':赋予给 root用户,@后面是ip,%:代表是通配符
- IDENTIFIED BY:后面是密码
【*】赋予用户查询权限
GRANT SELECT ON lby.* TO 'dev' @'192.168.0.%' IDENTIFIED BY '123' WITH GRANT OPTION;
- 赋予对lby数据库中所有内容的查询功能 ,给网段在192.168.0.*的用户名为dev密码是123的用户
- 其中ip地址为本机电脑的ip,本地的电脑ip必须符合Mysql授予权限的ip,否则登录不上
- 授予权限之后在mysq权限表中可以查询到
- 赋予该用户对数据库只有查询功能,那么该用户只能对数据库的表进行查询,而不能进行其他操作
【*】连接测试
【*】删除授予用户的权限
-
删除之前,对mall数据库查询,修改,删除,插入等都有权限
- 撤销查询权限指令
REVOKE SELECT on mall.* from 'dev'@'192.168.0.%'
FLUSH PRIVILEGES #刷新权限
- 结果,查询权限已经消失
- 撤销所有的权限
REVOKE ALL on mall.* from 'dev'@'192.168.0.%';
FLUSH PRIVILEGES
【*】删除用户
- 删除前
- 删除命令
DELETE FROM user WHERE User="LAPTOP-PB00EUEG" and Host = '192.168.0.108'
- 删除后
【*】Mysql权限涉及的表
- User 的一行记录代表一个用户标识
- db 的一行记录代表对哪个数据库的权限
- table_priv 的一行记录代表对表的权限
- column_priv 的一行记录代表对某一列的权限
【*】mysql创建数据库使用utf8和utf8mb4区别
- mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常
- Emoji 表情,不常用的汉字就没办法存储,常见于ios和android ,使用utf8mb4则可以解决这个问题
- CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用 VARCHAR 替代 CHAR
【*】每个用户都要授权比较麻烦,mysql在5.7之后引入了类似于用户组的功能
- 查看mysql的环境变量,查看当前proxy是否开启,下图表示没有开启
show variables like "%proxy%"
- #开启proxy 下图表示已开启,需要在root权限下操作,不然权限不够,没办法设置
set global check_proxy_users =on;
set global mysql_native_password_proxy_users = on;
【*】创建一个角色
- 创建一个角色(Mysql中这个角色就是用户,把角色赋予用户,就是将角色赋予角色)
create USER 'dev_role'
- 创建两个用户
create USER 'lby1';
create USER 'lby2';
- 查看lby1用户的权限
show GRANTS for 'lby1'
- 把角色付给用户(其实这里把角色理解为用户组比较好些,换一种说法就是把lby1和lby2用户添加到dev_role用户组中)
- 注意此处需要在mysql的服务器上进行一个操作,才能使远程连接的计算机完成赋予权限的操作
- 此处在远程将用户付给角色,没有使用密码
grant proxy on 'dev_role' to 'lby1';
grant proxy on 'dev_role' to 'lby2'
- 将权限赋给角色
grant select(id,name) on lby.account to 'dev_role'
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://img-blog.csdnimg.cn/2022010616554746626.gif)
- 连接lby1v测试
- 查询表所有内容测试,发现并不能访问表的所有内容,因为上面只是将account中的id和name列的查询权限赋给dev_role角色
- 只查询id和name字段是可以的
- 角色权限存放的位置
- 结构解析
bin:区分大小写
ci:不区分大小写
datatime:没有时区的概念
timestamp:有时区的概念