MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限,而普通用户拥有指定的权限。

MySQL是通过权限表来控制用户对数据库访问的,权限表存放在mysql数据库中,主要的权限表有以下几个:user,db,host,table_priv,columns_priv和procs_priv,先带你了解的是user表。

通常用户信息、修改用户的密码、删除用户及分配权限等就是在mysql数据库的user表中。

用户列(用户连接MySQL数据库需要输入的信息)

Host:主机名,双主键之一,值为%时表示匹配所有主机。User:用户名,双主键之一。Password:密码名。

Host User Password
% domain_check *55B565DA3839E5955A68EA96EB735
localhost domain_check *55B565DA3839E5955A68EA96EB735
127.0.0.1 domain_check *55B565DA3839E5955A68EA96EB735
126.26.98.25 domain_check *55B565DA3839E5955A68EA96EB735
localhost    
::1 root *26C378D308851D5C717C13623EFD6
localhost root *26C378D308851D5C717C13623EFD6
127.0.0.1 root *26C378D308851D5C717C13623EFD6

(root,%),表示可以远程登录,并且是除服务器外的其他任何终端,%表示任意IP都可登录。
(root,localhost),  表示可以本地登录,即可以在服务器上登陆,localhost则只允许本地登录。
(root,127.0.0.1 ),表示可以本机登陆,即可以在服务器上登陆
(root,sv01),表示主机名为sv1可以登陆,sv01具体指的哪台机器,可以在cat /etc/hostname查看
(root,::1) ,  表示本机可以登陆, 看密码都是相同嘛,具体::1代表意义,待查

权限列

权限列决定了用户的权限,描述了用户在全局范围内允许对数据库和数据库表进行的操作,字段类型都是枚举Enum,值只能是Y或N,Y表示有权限,N表示没有权限。

权限字段名称 备注说明
Select_priv 确定用户是否可以通过SELECT命令选择数据
Insert_priv 确定用户是否可以通过INSERT命令插入数据
Delete_priv 确定用户是否可以通过DELETE命令删除现有数据
Update_priv 确定用户是否可以通过UPDATE命令修改现有数据
Create_priv 确定用户是否可以创建新的数据库和表
Drop_priv 确定用户是否可以删除现有数据库和表
Reload_priv  确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表重新加载权限表
 Shutdown_priv 确定用户是否可以关闭MySQL服务器在将此权限提供给root账户之外的任何用户时,都应当非常谨慎
Process_priv  确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程 
File_priv  确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令

安全列

安全字段名称 备注说明
ssl_type 支持ssl标准加密安全字段
ssl_cipher 支持ssl标准加密安全字段
x509_issuer 支持x509标准字段
x509_subject 支持x509标准字段
password_expired 密码是否过期。Y:说明该用户密码已过期 N:没有过期
plugin 5.5.7开始,mysql引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户
authentication_string 通过authentication_string可以控制两者的映射关系,(PAM plugin等,PAM可以支持多个服务名)

资源控制列

控制字段名称 字段类型 是否为空 默认值 备注说明
max_questions int(11)unsigned NO 0 每小时允许执行多少次查询:0表示无限制
max_updates int(11)unsigned NO 0 每小时可以执行多少次更新:0表示无限制
max_connections int(11)unsigned NO 0 每小时可以建立的多少次连接:0表示无限制
max_user_connections int(11)unsigned NO 0 单用户可以同时具有的连接数:0表示无限制

常用命令

查询所有用户
mysql> select Host,User,Password from user;

查询用户权限:all表示所有权限,select表示只查权限,update表示只改权限,delete表示只删权限等。
mysql> show grants for "user"@"host";
mysql> show grants for "root"@"localhost";

添加授权用户(新创建的用户,默认情况下是没有任何权限的):使用root用户连接到服务器
mysql> create user "用户名"@"IP地址" identified by "密码";
mysql> create user "haidon"@"%" identified by "123456";
mysql> create user "haidon"@"localhost" identified by "123456";
IP地址的表示方式:
1.% 表示用户可以从任何地址连接到服务器
2.localhost 表示用户只能从本地连接到服务器
3.指定一个ip表示用户只能从此ip连接到服务器

分配用户权限(给用户授权)
mysql> grant 权限列表 on 库.表 to "用户名"@"ip地址" with grant option;
mysql> grant all privileges on *.* to "haidon"@"%" with grant option;
mysql> grant all privileges on *.* to "haidon"@"%" identified by 'test' with grant option;
mysql> grant all privileges on domain_check.tb_user to "haidon"@"localhost" with grant option;
mysql> grant select on domain_check.tb_user to "haidon"@"localhost" with grant option;
mysql> grant select,insert on domain_check.tb_user to "haidon"@"132.24.98.25" with grant option;
1.权限列表:select、update、delete、insert、alter、drop、create、...(show)
2.库.表:*.*表示所有库的所有表。with grant option表示它具有grant权限。密码是test。
3.如果带了 with grant option,那么用户haidon可以将select ,update权限传递给其他用户( 如xiaodon)。
4.如果没带 with grant option,那么用户haidon不能给用户xiaodon授权。
5.all后面加上privileges,具体到哪些权限时得看MySQL版本,5.7版本不加privileges,8.0版本加privileges。
6.mysql> insert into user values("%","haidon",password("test"),"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y");
mysql> flush privileges; 这两句和上面第3句grant的效果是一样的。
7.mysql> insert into user (host,user) values("132.24.98.25","haidon");
mysql> insert into db values("132.24.98.25","haidon","Y","Y","Y","Y","Y","Y","N","N","N","N")
mysql> flush privileges; 这三句和上面第6句grant的效果是一样的。

收回用户权限
mysql> revoke all on *.* from "haidon"@"localhost";
mysql> revoke all on domain_check.tb_user from "haidon"@"localhost";
mysql> revoke select on *.* from "haidon"@"localhost";

删除授权用户
mysql> drop user "用户名"@"ip地址"
mysql> drop user "haidon"@"%"
mysql> delete from user where user='haidon';
mysql> flush privileges;

https://blog.csdn.net/lthirdonel/article/details/79011033

https://www.cnblogs.com/yang--yang/p/7607736.html

https://blog.csdn.net/zmx729618/article/details/78026497

https://www.cnblogs.com/cyl048/p/7992376.html

最新文章

  1. BFC布局
  2. Log4J的入门简介学习【转】
  3. lamp安装
  4. Linux后台开发常用工具
  5. 浅析CDN安全
  6. iframe 刷新
  7. zoj 3380 Patchouli's Spell Cards 概率DP
  8. KEEPALIVED 检测RS原理
  9. 【转】WebStorm 2016 最新版激活(activation code方式)
  10. 对js中prototype的理解
  11. 8月9日,PS、计算机基础(预科)
  12. 枚举最短路径+SPFA
  13. Announcement
  14. app中rem算法
  15. DNS Tunnel隧道隐蔽通信实验 && 尝试复现特征向量化思维方式检测
  16. angularjs1.X进阶笔记(3)——如何重构controller
  17. ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一)
  18. shell编程之函数
  19. SPLAY,LCT学习笔记(五)
  20. logback的使用

热门文章

  1. 查询物料单位PAC成本
  2. easyUI+servlet+mysql项目总结
  3. Docker启动守护式容器
  4. git(1) 比较两个不同版本的文件
  5. 【攻防世界】高手进阶 pwn200 WP
  6. python之大作业
  7. 《Effective-Ruby》读书笔记
  8. Numpy 随机序列 shuffle & permutation
  9. Leetcode练习题 Palindrome Number
  10. Bag of Tricks for Image Classification with Convolutional Neural Networks