目录
权限管理
账号管理
创建用户
查看用户权限
授予权限
删除权限
修改密码
补充mysql中权限
首页 数据库 mysql教程 MySQL中权限管理的详图介绍

MySQL中权限管理的详图介绍

Mar 01, 2017 pm 02:10 PM


权限管理


MySQL权限系统通过下面两个阶段进行认证:

  • 对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接。

  • 对通过认证的合法用户授予相应的权限,用户可以通过再这些权限范围内对数据库做相应的操作。
    在权限存取过程中,主要涉及到mysql数据库下user表和db表。user表的数据结构如下:
    这里写图片描述
    db表数据结构如下:
    这里写图片描述
    表的说明:其中包含用户列、权限列、安全列和资源控制列。用的最频繁的是用户列和权限列,权限分为普通权限和管理权限。普通权限用户数据库的操作如select_priv、insert_priv等。管理权限主要用来对数据库进行管理的操作,比如process_priv、super_priv等。
    用户进行连接的时候,权限表的存取过程:

  • 先从user表中的host、user和password这三个字段中判断连接的ip、用户名以及密码是否存在表中,如果存在,则通过验证,否则拒绝连接。

  • 通过身份验证之后,按照以下权限表的顺序得到数据库权限:user->db->tables->priv->columns_priv。全局权限,覆盖局部权限。比如一个用户在user表中拥有选择权限,那么他将对所有数据中的所有表所有的列都有选择权限。
    这里写图片描述
    权限查找详细描述:当用户通过权限认证之后,进行权限分配时候,按照user->db->tables_priv->columns_priv的顺序进行权限分配,即先检查权限表user,如果user表中对应的权限为Y,此时用户对应所有的数据库权限为Y,将不再检查db、tables_priv、columns_priv;如果为N,则到db表中进行查找用户对于具体数据库权限,如果得到db中的Y权限,则不在查找,否则检查tables_priv,看该数据库对应的具体表权限,如果为Y,则不在查找,否则检查columns_priv表,查看对应的具体列权限。这一点对于我们授予用户权限很重要。

账号管理

创建用户

创建用户,可以使用grant语法创建或者直接操作user表。
方法一:
直接操作use表
insert into user(Host,User,Password) values(“127.0.0.1”,”test”,password(“51testit”));
方法二:
格式 CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;  
eg:CREATE USER ‘test’@’127.0.0.1’ IDENTIFIED BY ‘51testit’;  
这里写图片描述
创建之后,登录如下:
这里写图片描述
MySQL加密方式: MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中是不加入实际的密码运算中,通过观察在很多用户中都携带了”“,在实际破解过程中去掉”*”,也就是说MySQLSHA1加密的密码的实际位数是40位。
Host字段描述

  • Host值可以是主机名或者IP号,或者locahost代表本地主机。

  • 可以再host列值前面使用通配符”%”和”_”,”%”代表匹配任何主机,空的Host值等于”%”。如”%.myweb.com”,匹配所有mysql.com域的所有主机。案例如下:

Host User 解析
myweb.wang pps pps,从myweb.wang连接
% pps pps,从任何主机连接
% 任何用户,从任何主机连接
122.164.35.127 pps pps,从122.164.35.127连接
122.164.35.% pps pps,从122.164.35.类型子网的任何主机连接

查看用户权限

对于上面创建的test,我没有进行任何授权操作,当我使用test用户去操作数据库时候,发现:
这里写图片描述
没有数据库操作权限,怎样才能查看用户拥有的权限呢?
查看权限
方法一:
show grants for test@127.0.0.1;
方法二:
查看user表中记录的权限。
select * from mysql.user where user=’test’ and host=’127.0.0.1’ \G;
这里写图片描述

授予权限

语法格式如下:
grant [privilege1|privilege2|all privileges] on dbName|.tableName 或 to user@hostName ;
当给test用户授予xxpt选择权限时候:
grant select On xxpt.* to test.127.0.0.1;
db表发生了变化,新增加一条记录。但是user表并没有改变。如下:
这里写图片描述
此时,可以使用test用户进行数据查询操作,但是不能进行增、删、改。于是授予其关于xxpt数据库的所有权限。
grant all privileges on xxpt.* to test@127.0.0.1;
用户test权限如下:
这里写图片描述
此时可以更新数据
这里写图片描述
管理权限sueper、process、file授予
grant sueper,process,file On . to ‘test’@’127.0.0.1’;
语句中on后面只能是.
备注:usage 权限用于登录,不能进行任何操作。

删除权限

使用grant新增权限,使用revoke进行权限回收。当然回收权限,也可以直接对user、db、tables_priv和columns_priv表进行操作。但是usage权限是没法收回的。
如回收test对所有数据库的读写权限:
revoke select ,insert on . from test@127.0.0.1;

修改密码

1.使用mysqladmin
2.使用set password for test@127.0.0.1 =password(‘isayhello’);
3.通过grant usage
grant usage on . to ‘test’@’127.0.0.1’ identified by ‘isayhello’;
4.直接修改user表
update user set Password=password(“newpassword”) where ***;

补充mysql中权限

权限                

权限级别                

权限说明                

CREATE

数据库、表或索引

创建数据库、表或索引权限

DROP

数据库或表

删除数据库或表权限

GRANT OPTION

数据库、表或保存的程序

赋予权限选项

REFERENCES

数据库或表

 

ALTER

更改表,比如添加字段、索引等

DELETE

删除数据权限

INDEX

索引权限

INSERT

插入权限

SELECT

查询权限

UPDATE

更新权限

CREATE VIEW

视图

创建视图权限

SHOW VIEW

视图

查看视图权限

ALTER ROUTINE

存储过程

更改存储过程权限

CREATE ROUTINE

存储过程

创建存储过程权限

EXECUTE

存储过程

执行存储过程权限

FILE

服务器主机上的文件访问

文件访问权限

CREATE TEMPORARY TABLES

服务器管理

创建临时表权限

LOCK TABLES

服务器管理

锁表权限

CREATE USER

服务器管理

创建用户权限

PROCESS

服务器管理

查看进程权限

RELOAD

 

 

服务器管理

执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限

REPLICATION CLIENT

服务器管理

复制权限

REPLICATION SLAVE

服务器管理

复制权限

SHOW DATABASES

服务器管理

查看数据库权限

SHUTDOWN

服务器管理

关闭数据库权限

SUPER

服务器管理

执行kill线程权限

 

MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:

权限分布

可能的设置的权限

表权限

‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’

列权限

‘Select’, ‘Insert’, ‘Update’, ‘References’

过程权限

‘Execute’, ‘Alter Routine’, ‘Grant’


 以上就是MySQL中权限管理的详图介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MySQL:初学者的数据管理易用性 MySQL:初学者的数据管理易用性 Apr 09, 2025 am 12:07 AM

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

mysql:简单的概念,用于轻松学习 mysql:简单的概念,用于轻松学习 Apr 10, 2025 am 09:29 AM

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

phpmyadmin怎么打开 phpmyadmin怎么打开 Apr 10, 2025 pm 10:51 PM

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

navicat premium怎么创建 navicat premium怎么创建 Apr 09, 2025 am 07:09 AM

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。

MySQL和SQL:开发人员的基本技能 MySQL和SQL:开发人员的基本技能 Apr 10, 2025 am 09:30 AM

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

navicat怎么新建连接mysql navicat怎么新建连接mysql Apr 09, 2025 am 07:21 AM

可在 Navicat 中通过以下步骤新建 MySQL 连接:打开应用程序并选择“新建连接”(Ctrl N)。选择“MySQL”作为连接类型。输入主机名/IP 地址、端口、用户名和密码。(可选)配置高级选项。保存连接并输入连接名称。

SQL删除行后如何恢复数据 SQL删除行后如何恢复数据 Apr 09, 2025 pm 12:21 PM

直接从数据库中恢复被删除的行通常是不可能的,除非有备份或事务回滚机制。关键点:事务回滚:在事务未提交前执行ROLLBACK可恢复数据。备份:定期备份数据库可用于快速恢复数据。数据库快照:可创建数据库只读副本,在数据误删后恢复数据。慎用DELETE语句:仔细检查条件,避免误删数据。使用WHERE子句:明确指定要删除的数据。使用测试环境:在执行DELETE操作前进行测试。

navicat如何执行sql navicat如何执行sql Apr 08, 2025 pm 11:42 PM

在 Navicat 中执行 SQL 的步骤:连接到数据库。创建 SQL 编辑器窗口。编写 SQL 查询或脚本。单击“运行”按钮执行查询或脚本。查看结果(如果执行查询的话)。

See all articles