当前位置: 首页 > 图文教程 > 专题中心 > MYSQL教程和MYSQL数据库入门教程专题 MYSQL > MYSQL入门教程 > MYSQL教程:数据库安全管理

MYSQL入门教程
MYSQL教程:数据目录
MYSQL教程:服务器优化和硬件优化
MYSQL教程:查询优化之调度和锁定
MYSQL教程:查询优化之有效加载数据
MYSQL教程:数据列类型与查询效率
MYSQL教程:索引和查询优化程序
MYSQL教程:表达式操作符和数据类型转换
MYSQL教程:如何选择正确的数据列类型
MYSQL教程:MYSQL字符集支持
MYSQL教程:MYSQL列类型(column type)
MYSQL教程:MYSQL数据值类型(data type)
MySQL教程:Group By用法
MySQL教程:Replace INTO说明
MySQL教程:Order By Rand()
MySQL教程:Order By语法
MySQL教程:Order By索引优化
MySQL教程:Order By用法
MYSQL教程:新手该看的MYSQL操作

MYSQL入门教程 中的 MYSQL教程:数据库安全管理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-12-06   浏览: 40 ::
收藏到网摘: n/a

为了确保数据库平稳可靠运行,我们需进行维护和管理,这是每一位数据库管理员的职责。下面分几个专题分别介绍。

数据库安全管理

MySQL数据库通过用户和密码来控制用户对数据库的访问,当我们新安装了一个数据库服务器时,MySQL的权限表设置是很不安全,它默认允许任何人不需要密码就可访问数据库。所以我们安装好服务器后第一件需要做的就是设置用户密码。

本文由软晨学习网(http://www.ruanchen.com)整理发布!转载请注明出处,谢谢!

在MySQL中的mysql数据库的user数据表中存有用户的帐号信息,在初始状态下已存在root和一些匿名用户,且所有用户都没有设置密码。该数据表的这些用户信息是通过一个mysql_install_db脚本安装的。该表的主要列有:

  • User,连接数据库的用户名。

  • Host,允许连接到数据库服务器的主机名,“%”通配符代表所有主机。

  • Password,连接密码,已加密。

  • 其它权限列,以“Y”或“N”标识是否有效。

在这种状态下的数据库是极不安全的,我们可用以下命令轻易地访问数据库:

% mysql -h localhost -u root #通过本地主机,root用户访问,不需要密码验证
% mysql -h localhost #通过本地主机,匿名用户访问,不需要密码验证

设置MySQL用户帐号密码的方法有三种:

  • 使用mysqladmin程序:

    % mysqladmin -h localhost -u root password "password" #设置在本地以root身分登录的密码
    % mysqladmin -h remote -u root password "password" #设置远程主机以root身分登录的密码
    

    在初始设置时,这两条语句都要运行,以确保数据库本地访问和网络访问的安全。

  • 通过set password这条SQL语句设置:

    mysql> set password for 'root'@'localhost' = password('password');
    mysql> set password for 'root'@'remote' = password('password');
    
  • 直接修改user权限表:

    mysql> use mysql;
    mysql> update user set password=password('password') where user='root';
    mysql> flush privileges; #重载权限表,使修改马上生效
    

    MySQL使用驻留在内存中的权限表拷贝来进行访问控制,当使用mysqladmin和set password设置密码,MySQL会监察到权限表已被修改,它自动重载该表。而用update的方式,MySQL就监察不到变化,需手动用flush privileges命令刷新内存中的权限表,以使它马上生效。

为root用户设置密码后,如果需以root身份连接数据库,就需验证密码。我们可用以下语句连接数据库:

% mysql -u root -p
Enter password: #输入root的密码

在user表中,user列为空的为匿名用户。它也是没有密码的,我们需为它们设置一个密码,或干脆把它们删除。在windows系统上的本地匿名用户帐号和root用户有着同样的权限,这是一个很大的安全漏洞。应该把它删除或把权限削弱。