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

MYSQL
mysql "too many connections" 错误 之 mysql解决方法
MySQL: mysql is not running but lock exists 的解决方法
使用mysql中遇到的几个问题
MySQL一个索引最多有多少个列?真实的测试例子
MySQL里Create Index 能否创建主键 Primary Key
MySQL 创建索引(Create Index)的方法和语法结构及例子
MYSQL 优化常用方法
linux mysql 找回密码
mysql 动态执行存储过程语句
MySQL 查找价格最高的图书经销商的几种SQL语句
MySQL 客户端不输入用户名和密码直接连接数据库的2个方法
mysql 查询表中平均分最低的班级
mysql 左连接、右连接和内连接
Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
Mysql 插入中文及中文查询 (修改+调试)
mysql 数据表中查找重复记录
MySql .frm数据库文件导入的问题
解决hibernate+mysql写入数据库乱码
mySQL UNION运算符的默认规则研究

MYSQL教程:数据库安全管理


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