Home >Database >Mysql Tutorial >解析MYSQL授权原则_MySQL

解析MYSQL授权原则_MySQL

WBOY
WBOYOriginal
2016-06-01 13:56:23836browse

MySQL是一个跨平台的开源关系型数据库管理系统,是我们常用的最经济实惠的数据库,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,更让用户得到最切实的实在,很多用户在应用中对授权原则不是很了了解,下面我们就为大家来解析。

服务器重新启动的情况

当mysqld启动时,所有的授权表内容被读进存储器并且从那时开始生效。

被服务器立即应用的情况

用GRANT、REVOKE或SET PASSWORD对授权表施行的修改会立即被服务器注意到。

直接修改授权表的情况

如果你手工地修改授权表(使用INSERT、UPDATE等等),你应该执行一个FLUSH PRIVILEGES语句或运行mysqladmin flush-privileges告诉服务器再装载授权表,否则你的改变将不生效,除非你重启服务器。

对现有客户连接的影响情况

当服务器注意到授权表被改变了时,现存的客户连接有如下影响:

?表和列权限在客户的下一次请求时生效。

?数据库权限改变在下一个USE db_name命令生效。

?全局权限的改变和口令改变在下一次客户连接时生效。

授权原则

无论怎么小心都难免在给用户授权时留有漏洞,希望下面的内容能给你一些帮助,你一般应该遵守这些规则。

只有root用户拥有授权表的改写权

不要把授权表的改写权授予除root用户之外的其它用户(当然,如果你可以用另一个用户代替root用户进行管理,以增加安全性)。因为这样,用户可以通过改写授权表而推翻现有的权限。产生安全漏洞。

一般情况下,你可能不会犯这个错误,但是在安装新的分发, 初始授权表之后。这个漏洞是存在的,如果你不了解这时授权表的内容你可能会犯错误。

在Unix(Linux)上,在按照手册的指令安装好MySQL后,你必须运行mysql_install_db脚本建立包含授权表的mysql数据库和初始权限。在Windows上,运行分发中的Setup程序初始化数据目录和mysql数据库。假定服务器也在运行。

当你第一次在机器上安装MySQL时,mysql数据库中的授权表是这样初始化的:

?你可以从本地主机(localhost)上以root连接而不指定口令。root用户拥有所有权限(包括管理权限)并可做任何事情。(顺便说明,MySQL超级用户与Unix超级用户有相同的名字,他们彼此毫无关系。)

?匿名访问被授予用户可从本地连接名为test和任何名字以test_开始的数据库。匿名用户可对数据库做任何事情,但无管理权限。

一般地,建议你删除匿名用户记录:

mysql> DELETE FROM user WHERE User="";

更进一步,同时删除其他授权表中的任何匿名用户,有User列的表有db、tables_priv和columns_priv。

另外要给root用户设置密码。

关于用户、口令及主机的设置

?对所有MySQL用户使用口令。

记住,如果other_user没有口令,任何人能简单地用mysql -u other_user db_name作为任何其它的人登录。对客户机/服务器应用程序,客户可以指定任何用户名是常见的做法。在你运行它以前,你可以通过编辑mysql_install_db脚本改变所有用户的口令,或仅仅MySQL root的口令,象这样:

shell> mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('new_password')

-> WHERE user='root';

mysql> FLUSH PRIVILEGES;

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn