• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

SQL编程:权限和服务器锁

MySQL SQL 彭东稳 8年前 (2016-06-19) 20137次浏览 已收录 0个评论

MySQL权限管理

权限管理主要是对登录到MySQL的用户进行权限验证,所有用户的权限都存储在MySQL的权限表中,不合理的权限规划会给MySQL服务器带来安全隐患。数据库管理员要对所有用户的权限进行合理规划管理。MySQL权限系统的主要功能时证实连接到一台给定主机的用户,并且赋予该用户在数据库上的SELECT/INSERT/UPDATEDELETE权限。

MySQL各种权限

账户权限信息被存储在MySQL数据库的几张权限表中,在MySQL启动时,服务器将这些数据库表中权限信息的内容读入内存。其中GRANTREVOKE语句所涉及的常用权限大致如下这些:CREATEDROPSELECTINSERTUPDATEDELETEINDEXALTERCREATE ROUTINEGRANTFILE等。

MySQL用户授权

授权就是为某个用户授予权限,合理的授权可以保证数据库的安全,MySQL中可以使用GRANT语句为用户授予权限。授权可以分为多个层次:

全局层级:全局权限适用于一个给定服务器中的所有数据库,这些权限存储在mysql.user表中。

数据库层级:数据库权限适用于一个给定数据库中的所有目标,这些权限存储在mysql.db表中。

表层级:表权限适用于一个给定表中的所有列,这些权限存储在mysql.tables_priv表中。

列层级:列权限使用于一个给定表中的单一列,这些权限存储在mysql.columns_priv表中。

子程序层级:CREATE ROUTINEALTER ROUTINEEXECUTEGRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予子程序层级,并存储在mysql.procs_priv表中。

PSMySQL中必须拥有GRANT权限的用户才可以执行GRANT语句。

用户权限管理

GRANT赋予用户权限

REVOKE移除用户权限

SHOW GRANTS查看用户权限

PS:使用REVOKE收回权限之后,用户帐户的记录将从dbhosttables_privcolumns_priv表中删除,但是用户帐号记录依然在user表中保存。

服务器级别的锁

这几个锁语句都是服务器级的锁,锁定粒度大,后面会详解介绍存储引擎级别的锁。在执行语句的时候都需要注意个特点,就是它们都是隐式提交的语句,在退出MySQL终端的时候都会隐式的执行unlock tables。也就是如果要让表锁定生效就必须一致保持会话。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!