当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MYSQL教程:数据库安全管理

MYSQL
MySQL忘记密码恢复密码的实现方法
mysql 时间转换函数的使用方法
使用mysql的disctinct group by查询不重复记录
mysql备份恢复mysqldump.exe几个常用用例
超详细mysql left join,right join,inner join用法分析
mysql 5.0.67最新版替代MySQL 5.0.51b版本官方下载
比较详细的MySQL字段类型说明
mysql 记录不存在时插入 记录存在则更新的实现方法
MYSQL基础之连接MYSQL、修改密码、添加用户
mysql数据库优化必会的几个参数中文解释
mysql中文排序注意事项与实现方法
MySQL 5.0触发器参考教程
MySQL5创建存储过程的示例
MYSQL5 masterslave数据同步配置方法
mysql数据库导出xml的实现方法
MySql增加用户、授权、修改密码等语句
Mysql默认设置的危险性分析
用MySQL创建数据库和数据库表代码
Mysql如何避免全表扫描的方法
mysql的校对规则引起的问题分析

MYSQL教程:数据库安全管理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 64 ::
收藏到网摘: 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用户有着同样的权限,这是一个很大的安全漏洞。应该把它删除或把权限削弱。