MySQL安全性指南(3)
作 者: 晏子
2.4 不用GRANT设置用户
如果你有一个早于3.22.11的MySQL版本,你不能使用GRANT(或REVOKE)语句设置用户及其访问权限,但你可以直接修改授权表的内容。如果你理解GRANT语句如何修改授权表,这很容易。那么你通过手工发出INSERT语句就能自己做同样的事情。
当你发出一条GRANT语句时,你指定一个用户名和主机名,可能还有口令。对该用户生成一个user表记录,并且这些值记录在User、Host和Password列中。如果你在GRANT语句中指定全局权限,这些权限记录在记录的权限列中。其中要留神的是GRANT语句为你加密口令,而INSERT不是,你需要在INSERT中使用PASSWORD()函数加密口令。
如果你指定数据库级权限,用户名和主机名被记录在db表的User和Host列。你为其授权的数据库记录在Db列中,你授予的权限记录在权限列中。
对于表级和列级权限,效果是类似的。在tables_priv和columns_priv表中创建记录以记录用户名、主机名和数据库,还有相关的表和列。授予的权限记录在权限列中。
如果你还记得前面的介绍,你应该能即使不用GRANT语句也能做GRANT做的事情。记住在你直接修改授权表时,你将通知服务器重载授权表,否则他不知道你的改变。你可以执行一个mysqladmin flush-privileges或mysqladmin reload命令强迫一个重载。如果你忘记做这个,你会疑惑为什么服务器不做你想做的事情。
下列GRANT语句创建一个拥有所有权的超级用户。包括授权给别人的能力:
GRANT ALL ON *.* TO anyname@localhost IDENTIFIED BY "passwd"
WITH GRANT OPTION
该语句将在user表中为anyname@localhost创建一个记录,打开所有权限,因为这里是超级用户(全局)权限存储的地方,要用INSERT语句做同样的事情,语句是:
INSERT INTO user VALUES("localhost","anyname",PASSWORD("passwd"),
"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y")
你可能发现它不工作,这要看你的MySQL版本。授权表的结构已经改变而且你在你的user表可能没有14个权限列。用SHOW COLUMNS找出你的授权表包含的每个权限列,相应地调整你的INSERT语句。 下列GRANT语句也创建一个拥有超级用户身份的用户,但是只有一个单个的权限:
GRANT RELOAD ON *.* TO flush@localhost IDENTIFIED BY "flushpass"
本例的INSERT语句比前一个简单,它很容易列出列名并只指定一个权限列。所有其它列将设置为缺省的"N":
INSERT INTO user (Host,Password,Reload) VALUES("localhost","flush",PASSWORD("flushpass"),"Y")
数据库级权限用一个ON db_name.*子句而不是ON *.*进行授权:
GRANT ALL ON sample.* TO boris@localhost IDENTIFIED BY "ruby"
这些权限不是全局的,所以它们不存储在user表中,我们仍然需要在user表中创建一条记录(使得用户能连接),但我们也需要创建一个db表记录记录数据库集权限:
INSERT INTO user (Host,User,Password) VALUES("localhost","boris",PASSWORD("ruby"))
INSERT INTO db VALUES("localhost","sample_db","boris","Y","Y","Y","Y","Y","Y","N","Y","Y","Y")
"N"列是为GRANT权限;对末尾的一个数据库级具有WITH GRANT OPTION的GRANT语句,你要设置该列为"Y"。
要设置表级或列级权限,你对tables_priv或columns_priv使用INSERT语句。当然,如果你没有GRANT语句,你将没有这些表,因为它们在MySQL中同时出现。如果你确实有这些表并且为了某些原因想要手工操作它们,要知道你不能用单独的列启用权限。
你设置tables_priv.Table_priv或columns_priv.Column_priv列来设置包含你想启用的权限值。例如,要对一个表启用SELECT和INSERT权限,你要在相关的tables_priv的记录中设置Table_priv为"Select,Insert"。
如果你想对一个拥有MySQL账号的用户修改权限,使用UPDATE而不是INSERT,不管你增加或撤销权限都是这样。要完全删除一个用户,从用户使用的每个表中删除记录。
如果你愿意避免发一个查询来直接修改全权表,你可以看一下MySQL自带的mysqlaccess和mysql_setpermissions脚本。

在Go语言中使用ElasticStack:完整指南ElasticStack是一个开源工具集,它为搜索、分析和可视化大量数据提供了强大的支持。该工具集由四个主要组件组成:Elasticsearch、Logstash、Kibana和Beats。其中,Elasticsearch是一个分布式的搜索和分析引擎,能够快速地执行搜索、分析和聚合操作。Logstash是

AWS(AmazonWebServices)是一家全球领先的云计算提供商,为企业和个人提供各种云计算服务。随着云计算技术的发展,越来越多的开发者开始使用AWS来进行开发、测试和部署他们的应用程序。Go语言是一门非常流行的编程语言,尤其适合构建高性能和可扩展的云原生应用程序。AWS提供了适用于Go语言的SDK(SoftwareDevelopmentKi

随着Web应用程序的日益普及,安全审计也变得越来越重要。PHP是一种广泛使用的编程语言,也是很多Web应用程序的基础。本文将介绍PHP中的安全审计指南,以帮助开发人员编写更加安全的Web应用程序。输入验证输入验证是Web应用程序中最基本的安全特性之一。虽然PHP提供了许多内置函数来对输入进行过滤和验证,但这些函数并不能完全保证输入的安全性。因此,开发人员需要

近年来,随着云计算技术的发展,许多企业开始转向使用云存储服务来存储和管理自己的数据。其中,AWSS3(AmazonWebServicesSimpleStorageService)是一种备受欢迎的选择。作为AWS的核心服务之一,S3提供了高可用性、高性能、可扩展和安全的存储服务。在这篇文章中,我们将深入探讨如何在Go语言中使用AWSS3。安装AW

随着现代企业的发展,ERP系统的重要性也越来越凸显出来。ERP系统可以帮助企业集成和管理计划、客户关系、供应链、人力资源等方面的数据和业务流程。PHP作为一种流行的编程语言,也可以用于开发ERP系统。在本文中,我们将分享一些PHP中的ERP系统开发指南。确定ERP系统的需求在开始开发ERP系统之前,您需要确定自己的ERP系统所需要的功能。根据你的企业的运营方
![如何使用 wmic 快速列出所有 Windows 进程 [教程]](https://img.php.cn/upload/article/000/887/227/168569000461539.jpg)
当您在处理各种重要项目并且性能是关键字时,必须准确了解后台运行的进程。特别是如果上述一个或多个过程影响您当前的工作,或者您可以只使用额外的果汁。准确地找出您的设备仍在后台运行的内容非常容易。您可以使用wmic工具在几秒钟内获得所需的所有信息。怎么样,你问?我们将在本文中向您展示这一点,因此您可以方便地获得这些信息以供将来参考。如何使用wmic了解后台进程?实际上,您可以在命令提示符窗口中输入许多有用的命令,前提是您以管理员权限打开它,这些命令可以提供宝贵的信息。了解后台进程以及收集系统信息(BI

PHP作为一种广泛使用的服务器端语言,在许多Web应用程序中扮演着重要的角色。音频处理是一个很常见的需求,例如音乐网站和音频产品销售网站等。在本文中,将为读者介绍如何在PHP中操作音频文件。一、了解音频格式在PHP中操作音频文件前,需要先了解音频文件格式。常见的音频格式有MP3、WAV、OGG、FLAC等。不同的格式有不同的音频编码算法和数据格式。例如,MP

AWS(AmazonWebServices)作为云计算业界的领头羊,提供了方便而强大的云计算服务,使得企业可以轻松地构建和管理自己的IT基础设施,并获得更好的可扩展性、灵活性和低成本。而IAM(IdentityandAccessManagement)是AWS中的重要服务之一,负责管理用户(包括人员、应用、服务等)的身份和访问权限,保障AWS资源的安


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
