连接mysql的问题???急!

gdj980150 2004-09-22 09:15:56
在连接mysql时如果root密码为空,我的bean就能连接上。如果我设置了root用户的口令时总提示以下错误:
Communication failure during handshake. Is there a server running o
???
DBurl = "jdbc:mysql://localhost:3306/test?user=test&password=123&useUnicode=true&characterEncoding=8859_1";
...全文
228 点赞 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
20020829 2004-09-23
我用的是3.1.3-beta
你可以下载一个来试下。。但是数据库没有授权就是连不到的。。总是会出错的。。
驱动应该就问题不大了吧。。你可以配置一下然后写个类测试一下。。没有的话我可以给你提供一个的
回复
gdj980150 2004-09-23
是不是驱动的问题,用mm.mysql-2.0.4-bin.jar这种驱动怎么也连不上
回复
应该网 2004-09-23
关注!
回复
20020829 2004-09-23
这个问题就是授权的问题吧。。给ROOT授权然后利用远程协议。就可以了
你用空密码的时候是本地协议。真正用的时候是不行的。

你可以这样做:
你可以通过发出GRANT语句增加新用户:

shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
这些GRANT语句安装3个新用户:

monty
可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令('something'做这个。注意,我们必须对monty@localhost和monty@"%"发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。
admin
可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。
dummy
可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为'N'--USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。

然后用String sDBDriver="com.mysql.jdbc.Driver";
最好不用String sDBDriver="org.gjt.mm.mysql.Driver";
这样就可以了。。
回复
gdj980150 2004-09-23
我按照楼上的说的做了,如果使用mm.mysql-2.0.4-bin.jar这种驱动,jsp还是连接不上数据库,仍然提示Communication failure during handshake. Is there a server running o
n localhost:3306?
回复
dropship 2004-09-23
用root和你设置的密码在dos下登陆mysql看行不行,
说到点子上了
回复
drugon 2004-09-23
我使用的root 用户,其他用户都删了。密码为空时能连接上数据库,但是一加上密码就不行了

你在加上密码的时候是在哪里加上的密码?如果你是在前台用一些工具加上的密码,那么这个密码在登陆mysql的时候不一定起作用,你应该在dos下对mysql进行授权和加码密的,这样才会有效。不信你可以试一下,用root和你设置的密码在dos下登陆mysql看行不行,
先在dos下对root用户授权
GRANT ALL PRIVILEGES ON *.* TO root@localhost
IDENTIFIED BY 'pass' WITH GRANT OPTION; //pass是你要设置的密码
然后你再连的试试,应该没有问题的。


if(!resultset.next())这种语句了,抱错:Operation not allowed after ResultSet closed。
这个异常是说你己经把resultset关闭了,不能再对它进行操作了。也就是你在进行if(!resultset.next())这一操作之前,你己经调用了resultset.close()了,
回复
gdj980150 2004-09-23
我换了一种驱动程序由mm.mysql-2.0.4-bin.jar换成了mysql-connector-java-3.0.9-stable-bin.jar时,root非空口令能连接上数据库了,但是我的程序中不能使用if(!resultset.next())这种语句了,抱错:Operation not allowed after ResultSet closed。
请问是什么原因〉?
回复
gdj980150 2004-09-23
我使用的root 用户,其他用户都删了。密码为空时能连接上数据库,但是一加上密码就不行了
回复
miaoliujun 2004-09-23
你这个用户是test@localhost吗?
回复
derek1981 2004-09-23
你把你的匿名用户权限全部取消之后试试用这个URL还能不能访问,我的机子上刚好相反,我只能用root+password访问,其他的用户都不能访问,权限也设置全有
回复
gdj980150 2004-09-23
好了,解决了.谢谢大家的支持.
回复
gdj980150 2004-09-23
我用的是root用户,所有的权限都给了呀,关键是空口令时,就能连接上。root设置了口令时mm.mysql-2.0.4-bin.jar这种驱动就连不上了
回复
cucuchen 2004-09-22
池连接:
如果说是池连接的话:你可以这样试试
<parameter>
<name>url</name>
<value>jdbc:mysql://192.168.1.10/news?useUnicode=true&characterEncoding=GBK</value>
<!--must use & not use & -->
代码连接:
public Connection pubGetCon() {
try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url = "jdbc:mysql://" + dbip + "/" + host + "?user=" + user + "&password=" + password + "&useUnicode=true&characterEncoding=gb2312";
conn = DriverManager.getConnection(url);

} catch (Exception e) {
e.printStackTrace();
}
return this.conn;
}
回复
cucuchen 2004-09-22
兄弟,你到底是池连接还是代码连接都没有讲清楚,麻烦你给大家讲清楚好不好?
回复
gdj980150 2004-09-22
请高手赐教...
回复
gdj980150 2004-09-22
我用的是root用户,权限没有修改过
回复
schee 2004-09-22
看看你的用户权限;
回复
victorylj 2004-09-22
我也遇到过同样的问题
关注 ing
回复
gdj980150 2004-09-22
在线等候!!!!
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-09-22 09:15
社区公告
暂无公告