前段时间,重装web服务器,mysql数据库服务器后,发现如下异常:
2006-12-0117:14:36[com.talented.connection.MysqlConnection]-[ERROR]java.sql.SQLException:null,messagefromserver:"Hostwww.qfmy.tyut.edu.cnisnotallowedtoconnecttothisMySQLserver"
2006-12-0117:14:36[StandardWrapper[:jsp]]-[ERROR]Servlet.service()forservletjspthrewexception
这就怪了,重装系统以前网站运行好好的,什么原因呢?折腾了半天,原来是数据库重装后引出的问题,我把具体的问题和解决办法记录下来,避免以后走弯路:
异常信息:
2006-12-0117:14:36[com.talented.connection.MysqlConnection]-[ERROR]java.sql.SQLException:null,messagefromserver:"Hostwww.qfmy.tyut.edu.cnisnotallowedtoconnecttothisMySQLserver"
2006-12-0117:14:36[StandardWrapper[:jsp]]-[ERROR]Servlet.service()forservletjspthrewexception
java.lang.NullPointerException
atcom.talented.dao.BlogDAO.getRecordCount(BlogDAO.java:53)
atorg.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:60)
问题原因:
重装后直接拷贝数据文件引起。
解决办法:
进入mysql,创建一个新用户user1:
格式:grant权限on数据库名.表名用户@登录主机identified by"用户密码";
grant select,update,insert,delete on *.* to user1@192.168.1.21 identified by"1234";
查看结果,执行:
use mysql;
select host,user,password from user;
可以看到在user表中已有刚才创建的user1用户。host字段表示登录的主机,其值可以用IP,也可用主机名,
将host字段的值改为%就表示在任何客户端机器上能以user1用户登录到mysql服务器,建议在开发时设为%。
update user set host=% where user=user1;
也可以直接执行如下命令:
GRANT SELECT,INSERT,DELETE,UPDATE ON *.* TO user1@"%" IDENTIFIED BY "1234";
范例的用户:user1,密码:1234,在实际操作中可以替换。