1.权限介绍
ALL:一般是普通管理员拥有的权限
with grant option:超级管理员才具备的权限,用来给用户进行授权的权限
例如如下命令:
3306 [(none)]>grant all on test.* to test@'%' identified by 'test';
详解: grant:授权命令
all:权限
on:在什么对象上设置权限
test.*:权限作用范围,此处表示的就是test库下的所有表,如果是所有库下的所有表(*。*),如果是test库下的user表(test.user)
to:对哪个用户设置权限
test@'%' identified by 'test':被授予权限的用户和密码
当然也可以根据具体需要设置具体权限,如下:
3306 [(none)]>grant SELECT,INSERT,UPDATE,DELETE on test.* to test@'%' identified by 'test';
查询权限的命令如下
--查询test@'%'用户的权限
3306 [(none)]>show grants for test@'%';
收回权限的命令如下
--收回test@'%'用户对test库的删除权限
3306 [(none)]>revoke delete on test.* from test@'%';
2.MYSQL8.0对grant命令添加了新特性
MYSQL5.7的时候使用grant命令给用户授权时,如果用户不存在,会自动创建该用户。
MYSQL8.0创建用户和授权被分开处理,grant命令不再支持自动创建用户,也不能修改密码,授权之前必须先创建用户。
即8.0授权命令如下:
3306 [(none)]>grant SELECT,INSERT,UPDATE,DELETE on test.* to test@'%'
3.如果忘记了root密码,可以先停掉数据库并通过如下方式重置密码
第一步
[root@localhost ~]# mysqld_safe --skip-grant-tables --skip-networking &
解释: --skip-grant-tables :跳过授权表
--skip-networking :禁止远程连接
第二步:登录,密码随便输入都可以进入
[root@localhost ~]# mysql -uroot -p
第三步:将授权表刷新进入内存中
3306 [(none)]>flush privileges;
第四步:修改密码
3306 [(none)]>alter user root@'localhost' identified by 'root';
第五步:关闭数据库
[root@localhost ~]# pkill mysqld
第六步:重启数据库
[root@localhost ~]# systemctl start mysqld;
补充
MYSQL登录方式
方式一:TCP/IP
[root@localhost ~]# mysql -uroot -p -h localhost -P 3306
方式二:SOCKET
[root@localhost ~]# mysql -uroot -p -S /tmp/mysql.sock