🌟前言
什么是DCL数据控制语言?
答:数据控制语言(DCL:Data Control Language)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、REVOKE等语句。
🌟限制用户指定IP登录
1.查看某用户可以在哪台机器登录
select user,host from mysql.user where user='用户名';
2.修改mysql用户的登录IP
update mysql.user set host='localhost' where user='用户名';
3.刷新权限
flush privileges;
🌟用户密码操作
用户密码修改
方法1:set password for 用户@ip = password(‘密码’);
set password for root@localhost = password('root12345');
方法2:mysqladmin -u用户 -p旧密码 password 新密码;
mysqladmin -uroot -proot12345 password root2222
方法3: update mysql.user set authentication_string=password(‘密码’) where user=‘用户’ and host=‘ip’;
update mysql.user set authentication_string=password('root') where user='root' and host='localhost';
忘记密码
- 修改配置文件my.cnf (默认在/etc/my.cnf),在[mysqld]下面加上 skip-grant-tables (跳过权限)。
- 重启mysql服务。
- mysql -uroot -p 无需密码登录进入。
- 进行修改密码的命令操作
🌟创建用户并限制IP登录、删除用户
--创建root用户并指定所有网段都能登录 create user 'root'@'%' identified by '123456'; --创建root用并指定在51网段登录 create user 'root'@'%.%.51.%' identified by '123456'; --删除用户 drop user 'root'@'%'; delete from mysql.user where user='root';
🌟库表权限授权、回收
权限授权
- 语法格式:grant 权限1,权限2… on 数据库对象 to ‘用户’@‘host’ identified by ‘password’;
- 所有权限:all privileges
- 所有库表: * . *
--对现有用户进行授权:对现有用户root授予所有库所有表所有权限。 grant all privileges on *.* to 'pig'; --创建新用户sys授予sys数据库的所有权限,登录密码123456,任何一台主机登录 grant all privileges on sys.* to 'sys'@'%' identified by '123456'; --授予查看、修改、新增的权限 grant select,update,insert on sys.* to 'sys'@'%' identified by '123456'
权限回收
- 语法格式:revoke 权限1,权限2… on 数据库对象 from ‘用户’@‘host’;
--回收root用户的所有权限(注意:没有回收登录权限) revoke all privileges on *.* from 'root' @ '%'; flush privileges; ---回收pig用户的所有权限(并回收它的登录权限) delete from mysql.user where user='root'; flush privileges; ---回收查询、修改权限 revoke select,update on sys.* from 'sys'@'%'; flush privileges;
🌟grant、revoke一览表
命令 | 语法格式 | 描述 |
GRANT | grant 权限1,权限2… on 数据库对象 to ‘用户’@‘host’ identified by ‘password’; | 授予用户或角色对数据库对象的权限 |
REVOKE | revoke 权限1,权限2… on 数据库对象 from ‘用户’@‘host’; | 撤销用户或角色对数据库对象的权限 |
🌟写在最后
最后感谢大家对本博文的阅读,如有不足请大家在评论区作出补充,感激不尽!