权限介绍
mysql中的数据是非常重要的,在生产环境中不同项目的开发、运维都会接触到mysql,数据的安全就会尤为重要。如何能保证数据的安全呢,正确合理权限是我们最重要的保障。总体思路就是针对用户的使用及权限做定制化设置,保证不给用户分配超出权利之外的权限,防止作恶。
常用权限
权限指定符 权限允许的操作
Alter 修改表和索引
Create 创建数据库和表
Delete 删除表中已有的记录
Drop 抛弃(删除)数据库和表
INDEX 创建或抛弃索引
Insert 向表中插入新行
REFERENCE 未用
Select 检索表中的记录
Update 修改现存表记录
FILE 读或写服务器上的文件
PROCESS 查看服务器中执行的线程信息或杀死线程
RELOAD 重载授权表或清空日志、主机缓存或表缓存。
SHUTDOWN 关闭服务器
ALL 所有;ALL PRIVILEGES同义词
USAGE 特殊的"无权限"权限
设置权限思考三个问题
登录方式:本地登陆,远程登陆
从哪里登录:登录IP地址范围
能干什么:登陆后能干什么
查看用户权限
查看某个用户的权限
show grantsfor 'sky'@'%';
USAGE 权限最小%代表所有机器IP
权限发放 grant命令
mysql> grant select on db1.* to "sky"@"%";
权限回收 revoke命令
mysql> revoke select on db1.* from "sky"@"%"
mysql忘记密码怎么办
方法一
[root@convirt~]# vim /etc/my.cnf
skip-grant-tables; #本地和远程登陆不管用户是谁都可以跳过密码
重启mysql
直接不用密码登陆
mysql>flush privileges ;
mysql> update mysql.user set password=password('') where user="root" and host="localhost"; password is null方法二
mysqld_safe--skip-grant-tables
即可跳过密码验证文件登陆(本地和远程都可以)--skip-networking 网络不可以登陆只能本地
改口令
update mysql.user set password=password('456') where user="root" and host="localhost";
----
password('456')
root@localhost的密码改为456
password 是将密码456加密
root密码为456
mysql 5.7 和mysql 8 以后改密码有了变化,没有password 函数