MySql用户安全

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 rosen 的 blog

    windows默认安装好mysql以后需要做一些安全措施。首先像这样:
    mysql> use mysql;
    database changed
    mysql> select host,user,password,select_priv,grant_priv from user;
    +------+------+-----------+-------------+------------+
    | host | user | password  | select_priv | grant_priv |
    +------+-------+----------+-------------+------------+
    | localhost | root |      | y           | y          |
    |  buider   | root |      | y           | y          |
  | localhost |      |      | y           | y          |
  |           |      |      | n           | n          |
  +-------+---+------+------+-------------+------------+
    4 rows in set (0.00 sec)

    默认情况下,可以不要任何用户、口令登陆mysql;来自localhost的root用户是没有口令的,一旦有人伪装成来自buider的root用户,安全性就会受到挑战。

    接着需要删除多余的用户:
    mysql> delete from user where user='';
    mysql> delete from user where host='buider';

    默认root用户的空密码也是必须修改:
    mysql> update user set password=password('123456') where user='root';
    mysql> flush privileges;

    这样,mysql数据库root用户的口令被改成123456了。其中最后一句命令flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还可以用root用户及空口令登陆,直到重启mysql服务器。

    再来看看:
    mysql> select host,user,password,select_priv,grant_priv from user;   
    +-----------+---------+------------------+-------------+------------+
    | host      | user    | password         | select_priv | grant_priv |
    +-----------+---------+------------------+-------------+------------+
    | localhost | root    | 565491d704013245 | y           | y          |
    +-----------+---------+------------------+-------------+------------+
    1 rows in set (0.03 sec)

    利用root用户登陆是不明智的,因为它拥有太大的权限,在实际使用时应该会出现安全问题,应该再建立一个用户,让他只要select、insert、update、delete这些基本权限即可。
    像这样建立一个叫javapro的用户密码为123456,它只能来自localhost并操作process下面所有的表:
    mysql> grant select,insert,update,delete on process.* to javapro@localhost identified by "123456";
    query ok, 0 rows affected (0.00 sec)

    让我们再来检查一下:
    mysql>  select host,user,password,select_priv,grant_priv from user;   
    +-----------+---------+------------------+-------------+------------+
    | host      | user    | password         | select_priv | grant_priv |
    +-----------+---------+------------------+-------------+------------+
    | localhost | root    | 565491d704013245 | y           | y          |
    | localhost | javapro | 565491d704013245 | y           | n          |
    +-----------+---------+------------------+-------------+------------+
    2 rows in set (0.00 sec)

    好,在程序中,我们只需要用javapro用户对我们的工作表process进行基本操作就行了。

    另外注意一下数据库备份的问题,mysqldump -u root -p mysql>samp.db.txt,在dos命令台(不是mysql)下运行之,可以在bin目录下生成mysql数据库下所有的表文件(samp.db.txt)。导入最好使用ems mysql manager。

本文关键:MySql用户安全
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top