RESIN/TOMCAT和MYSQL的连接解决方法
cloud/2003.10.15
mail:flashc@21cn.com
如果你不想看太多废话直接看下面3句话就ok了
解决方法的主要手段:
1.mysql的授权用户权限必须@%而不是@localhost
2.jsp使用jdbc驱动连接数据库的连接字符实际上应该算远程访问
3.切记:@%代表在远程的权限,@localhost实际上只有在本机的权限
也许我太笨了,折磨了我一个多月吧,这个问题,一直没法连接到数据库上,头都大了因我安装mysql后习惯删除user表里的3个多余的帐号,以加强安全,所以这个问题一直没解决掉(但我想不删也好象一样有问题吧?毕竟那几个帐号都不是@%的),总是找不到原因,在CU的斑竹的提示下(虽然没给我实际解决的方法,但我还是要谢谢他们),后来根据出错信息查了一下国外的BBS,找到了一个类似的回答同样的错误,不过一个老外提示说把连接字符串里的 localhost换成实际的域名或者IP我试了一下,没效,不过我突然想了下,又加了一个帐号@%的试验,成功了!心情很爽,再也不用郁闷了,还有,说一下,mysql这个数据库只有root帐号能有管理的特权,其他帐号是没权限动它的。
希望我的心得能给别人带来些帮助!
下面是测试用的jsp脚本,测试前请确保你的test数据库里面有个test表,随便填
两个字段和输入几行数据。
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.mysql.jdbc.Driver").newInstance();
String url ="jdbc:mysql://localhost/test?user=test&password=test&useUnicode=true&characterEncoding=8859_1" ;
//假设test是你的数据库
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
//从test表读数据
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>