详解MySQL数据库授权原则

数据库 MySQL 数据库运维
本文为大家讲述的是MySQL数据库授权原则,这也是事关很多中小企业数据库安全的头等大事,希望对大家有所帮助。

在这里我们将讨论的是MySQL数据库授权原则,这也事关广大中小企业数据库的安全问题。

MySQL是一个跨平台的开源关系型数据库管理系统,是我们常用的最经济实惠的数据库,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,更让用户得到最切实的实在,很多用户在应用中对授权原则不是很了了解,下面我们就为大家来解析。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_开始的数据库。匿名用户可对数据库做任何事情,但无管理权限。

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

  1. 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的口令,象这样:

  1. shell> mysql -u root mysql  
  2. mysql> UPDATE user SET Password=PASSWORD(’new_password’)  
  3. -> WHERE user=’root’;  
  4. mysql> FLUSH PRIVILEGES

【编辑推荐】

  1. MySQL创始人打造MariaDB 全面兼容MySQL 5.1
  2. 从MySQL 5.5发布看开源数据库版本升级新模式
  3. MySQL 5.5发布 支持半同步复制
  4. 详解MySQL中EXPLAIN解释命令
  5. MySQL数据库中的外键约束详解
责任编辑:彭凡 来源: 杨大风博客
相关推荐

2010-11-03 16:21:18

DB2数据库授权

2010-09-27 14:54:38

SQL数据库

2022-03-29 10:52:08

MySQL数据库

2010-05-19 13:37:39

MySQL数据库密码

2011-08-30 12:51:19

MySQL线程缓冲池

2011-07-05 10:03:00

Qt MYSQL 数据库

2009-12-31 11:10:01

2009-09-07 15:25:24

MySQL数据库互操作Silverlight

2018-07-30 15:00:05

数据库MySQLJOIN

2017-04-01 18:30:47

MySQL误删除数据库

2010-09-29 08:52:34

MySQL

2019-09-27 08:55:14

数据库MySQL服务器

2011-08-17 17:29:32

Windows编译MySQL

2010-06-10 17:19:05

MySQL数据库

2009-07-28 14:16:31

ASP.NET与MyS

2010-01-05 09:24:42

MySQL外键约束

2011-09-01 10:56:34

2011-08-30 13:40:28

MySQL线程

2011-08-25 17:49:14

MySQLmysqlcheck

2010-04-14 15:14:11

Oracle数据库
点赞
收藏

51CTO技术栈公众号