搜索
首页数据库mysql教程 MySQL权限体系介绍

一、权限体系简介:MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mysql.User、mysql.db、mysql.Host、mysql_table_priv和mysql.column_priv几个表中

一、权限体系简介:

MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mysql.User、mysql.db、mysql.Host、mysql_table_priv和mysql.column_priv几个表中。由于权限信息数据量比较小,而且访问又比较频繁,所以MySQL在启动时就会将所有的权限信息都Load到内存中保存在几个特定的结构中,所以才有了我们手动修改了权限相关的表后,都需要通过执行"FLUSH PRIVILEGES" 命令重新加载MySQL的权限信息。我们也可以通过GRANT,REVOKE或者DROP USER命令所做的修改权限后也会同时更新到内存结构中的权限信息。

二、权限的赋予与去除

要为某个用户授权可以使用GRANT命令,要去除某个用户现有的权限可以使用REVKOE命令,当给用户授权不仅需要提供用户名,还可以指定通过哪个主机访问,下面提供给简单的列子:

#创建一个用户test1只能从本机登录并赋予这个用户拥有test库的查询权限 mysql> grant select on test.* to test1@'localhost' identified by 'test123'; Query OK, 0 rows affected (0.03 sec) #创建一个用户test2可以从互联网上任何一台主机登录并赋予这个用户拥有test库的查询权限 mysql> grant select on test.* to test2@'%' identified by 'test234'; Query OK, 0 rows affected (0.02 sec) 刷新权限,并查询用户test1的权限 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> show grants for test1@'localhost'; +--------------------------------------------------------------------------------------------------------------+ | Grants for test1@localhost | +--------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'test1'@'localhost' IDENTIFIED BY PASSWORD '*676243218923905CF94CB52A3C9D3EB30CE8E20D' | | GRANT SELECT ON `test`.* TO 'test1'@'localhost' | +--------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec) 删除用户test1的权限 mysql> revoke select on test.* from 'test1'@'localhost' identified by 'test123'; Query OK, 0 rows affected (0.00 sec) 在此查看用户test1,网站空间,已经没有权限了。 mysql> show grants for test1@'localhost'; +--------------------------------------------------------------------------------------------------------------+ | Grants for test1@localhost | +--------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'test1'@'localhost' IDENTIFIED BY PASSWORD '*676243218923905CF94CB52A3C9D3EB30CE8E20D' | +--------------------------------------------------------------------------------------------------------------+

三、权限级别

mysql的权限分为5个级别,分别如下:

1、Global Lovel:

Global Lovel的权限控制又称为全局控制权限,所有权限信息u保存在mysql.User 表中,Global Lovel的所有权限都是针对整个mysqld的,对所有mysql数据库下的所有表及所有字段都有效。如果一个权限是以Global Lovel来授予的,服务器空间,则会覆盖其他所有级别的相同权限设置。Global Lovel主要有如下权限:

名称版本支持限制信息

ALTERALL表结构更改权限

ALTER ROUTINE5.0.3procedure, function 和 trigger等的变更权限

CREATEALL数据库,表和索引的创建权限

CREATE ROUTINE5.0.3+procedure, function 和 trigger等的变更权限

CREATE TEMPORARY TABLES4.0.2+零时表的创建权限

CREATE USER5.0.3+创建用户的权限

CREATE VIEW5.0.1+创建视图的权限

DELETEALL删除表数据的权限

EXECUTE5.0.3+procedure, function 和 trigger等的执行权限

FILE
ALL执行LOAD DATA INFILE 和 SELECT... INTO FILE 的权限

INDEXALL在已有表上创建索引的权限

INSERT
ALL数据插入权限

LOCK TABLES
4.0.2+执行LOCK TABLES 命令显示给表加锁的权限

PROCESS
ALL执行SHOW PROCESSLIST命令的权限

RELOAD
ALL执行FLUSH等让数据库重载LOAD某些对象或者数据命令的权限

REPLCATION SLAVE
4.0.2+主从复制中SLAVE连接用户所需的复制权限

REPLICATION CLIENT
4.0.2+执行SHOW MASTER STATUS 和SHOW SLAVE STSTUS命令的权限

SELECT
ALL数据查询权限

SHOW DATABASES
4.0.2+执行SHOW DATABASES的权限

SHUTDOWN
ALLMySQL Server的shut down 权限

SHOW VIEW
5.0.1+执行SHOW CREATE VIEW命令查看VIEW创建语句的权限

SUPER
4.0.2+执行kill线程,CHANGE MASTER,PURGE MASTER LOGS, and SET GLOBAL等命令的权限

UPDATE
ALL更新数据库的权限

USAGE
ALL新创建用户后不授权时所用到拥有最小的权限

要授予Global Lovel权限只需要在执行GRANT命令的时候,用*.*来指定范围是Global即可,如果有多个用户,可以使用逗号分隔开,如下:

mysql> grant all on *.* to test3,test4@'localhost' identified by 'test123'; Query OK, 0 rows affected (0.00 sec)

2、Database Level

Database Level是在Global Level之下,其他三个Level之上的权限级别,其作用域即为所指定数据库中的所有对象,和Database Level比 Database Level主要少了以下几个权限,CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE, SHOW DATABASES, SHUTDOWN,没有增加任何权限,

要授予Database Level权限,用如下方式实现:

1)、在执行GRANT命令的时候,通过database.* 来指定作用域为整个数据库:或者先创建一个没有权限的用户在使用过GRANT命令来授权。

mysql> grant all on test.* to test3,test4@'localhost' identified by 'test123'; Query OK, 0 rows affected (0.00 sec)

3、Table Level

Table Level权限可以被Global Level和Database Level权限覆盖,Table Level权限的作用域是授权所指定的表,可以通过如下语句来授权:

mysql> grant all on test.test1 to wolf@'%' identified by 'wolf@123'; Query OK, 0 rows affected (0.01 sec) mysql> show grants for wolf@'%'; +-----------------------------------------------------------------------------------------------------+ | Grants for wolf@% | +-----------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'wolf'@'%' IDENTIFIED BY PASSWORD '*F693761139616215C4AC1A7C23A8B8F5B94704D1' | | GRANT ALL PRIVILEGES ON `test`.`test1` TO 'wolf'@'%' | +-----------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)

Table Level权限由于作用域仅限于每张表,所以权限种类也比较小,只有如下8个权限,ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT,UODATE

4、Column Level

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
mysql:blob和其他无-SQL存储,有什么区别?mysql:blob和其他无-SQL存储,有什么区别?May 13, 2025 am 12:14 AM

mysql'sblobissuitableForStoringBinaryDataWithInareLationalDatabase,而alenosqloptionslikemongodb,redis和calablesolutionsoluntionsoluntionsoluntionsolundortionsolunsolunsstructureddata.blobobobsimplobissimplobisslowderperformandperformanceperformancewithlararengelitiate;

mySQL添加用户:语法,选项和安全性最佳实践mySQL添加用户:语法,选项和安全性最佳实践May 13, 2025 am 12:12 AM

toaddauserinmysql,使用:createUser'username'@'host'Indessify'password'; there'showtodoitsecurely:1)choosethehostcarecarefullytocon trolaccess.2)setResourcelimitswithoptionslikemax_queries_per_hour.3)usestrong,iniquepasswords.4)Enforcessl/tlsconnectionswith

MySQL:如何避免字符串数据类型常见错误?MySQL:如何避免字符串数据类型常见错误?May 13, 2025 am 12:09 AM

toAvoidCommonMistakeswithStringDatatatPesInMysQl,CloseStringTypenuances,chosethirtightType,andManageEngencodingAndCollat​​ionsEttingsefectery.1)usecharforfixed lengengters lengengtings,varchar forbariaible lengength,varchariable length,andtext/blobforlabforlargerdata.2 seterters seterters seterters seterters

mySQL:字符串数据类型和枚举?mySQL:字符串数据类型和枚举?May 13, 2025 am 12:05 AM

mysqloffersechar,varchar,text,and denumforstringdata.usecharforfixed Lengttrings,varcharerforvariable长度,文本forlarger文本,andenumforenforcingDataAntegrityWithaEtofValues。

mysql blob:如何优化斑点请求mysql blob:如何优化斑点请求May 13, 2025 am 12:03 AM

优化MySQLBLOB请求可以通过以下策略:1.减少BLOB查询频率,使用独立请求或延迟加载;2.选择合适的BLOB类型(如TINYBLOB);3.将BLOB数据分离到单独表中;4.在应用层压缩BLOB数据;5.对BLOB元数据建立索引。这些方法结合实际应用中的监控、缓存和数据分片,可以有效提升性能。

将用户添加到MySQL:完整的教程将用户添加到MySQL:完整的教程May 12, 2025 am 12:14 AM

掌握添加MySQL用户的方法对于数据库管理员和开发者至关重要,因为它确保数据库的安全性和访问控制。1)使用CREATEUSER命令创建新用户,2)通过GRANT命令分配权限,3)使用FLUSHPRIVILEGES确保权限生效,4)定期审计和清理用户账户以维护性能和安全。

掌握mySQL字符串数据类型:varchar vs.文本与char掌握mySQL字符串数据类型:varchar vs.文本与charMay 12, 2025 am 12:12 AM

chosecharforfixed-lengthdata,varcharforvariable-lengthdata,andtextforlargetextfield.1)chariseffity forconsistent-lengthdatalikecodes.2)varcharsuitsvariable-lengthdatalikenames,ballancingflexibilitibility andperformance.3)

MySQL:字符串数据类型和索引:最佳实践MySQL:字符串数据类型和索引:最佳实践May 12, 2025 am 12:11 AM

在MySQL中处理字符串数据类型和索引的最佳实践包括:1)选择合适的字符串类型,如CHAR用于固定长度,VARCHAR用于可变长度,TEXT用于大文本;2)谨慎索引,避免过度索引,针对常用查询创建索引;3)使用前缀索引和全文索引优化长字符串搜索;4)定期监控和优化索引,保持索引小巧高效。通过这些方法,可以在读取和写入性能之间取得平衡,提升数据库效率。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。