首页
论坛
图书
开发资料
在线文档
网址
下载
联系我们
 新闻│Java│JavaScript│Eclipse│Eclipse 英文│J2EE│J2ME│J2SE│JSP│Netbeans│Hibernate│JBuilder│Spring│Struts
站内搜索: 请输入搜索关键词

当前页面: 开发资料首页 → Java 专题 → MySql 用户安全

MySql 用户安全

摘要: MySql 用户安全

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="667" border="0"> <tr> <td width="386">

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)
</td> <td width="271" align="center">
</td> </tr> </table>

默认情况下,可以不要任何用户、口令登陆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。


请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:http://www.blogjava.net/rosen

function TempSave(ElementID) { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); } </td> </tr> <tr>


↑返回目录
前一篇: java中的事务处理
后一篇: 将数据库操作封装到Javabean

首页 | 全站 Sitemap | 联系我们 | 设为首页 | 收藏本站
版权所有 Copyright © 2006-2007, Java 编程资料牛鼻站, All rights reserved