JSP+MYSQL问题

bkwuk 2004-10-19 02:17:27
我使用SQL命令
update user set Password=PASSWORD('***') where User='root'
修改了root帐户的密码.
结果在JSP连接MYSQL的时候出现了这个异常:

Communication failure during handshake. Is there a server running on localhost:3306?

从字面上理解,提示localhost没有服务在3306这个端口运行,但是,通过netstat监视3306端口有服务器在运行,而且一些MYSQL管理工具也可以通过这个端口访问MYSQL.
请教有经验的朋友解决方法,感激不尽~~
...全文
90 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bkwuk 2004-10-19
可能是各位都没有经历过这个问题.
研究了一下午,最后找出了问题所在,
问题出在'root'@'localhost'上.查看下"mysql"数据下的user表,发现里面有两个"root"帐户.一个在"Host"中指定了为本地用户(localhost),而另一个root在Host中没有值(也就是说可以是任何一台主机上的).
当在"本地主机"上进行调试时,访问数据库(jdbc:mysql://localhost/test","root","")时所用到的root帐户并没有指定是本地用户(localhost)或是其他主机上的用户.所以MYSQL在用户访问验证的时候就产生混系了.到底是root@localhost还是root@anywhere?(这两个用户是各自独立的).最终造成MYSQL无法为发送请求的用户提供服务.我在更改root帐户密码时没有指定该帐户的Host的值.
所以使用sql命令修改root帐户应该指定是本地root帐户还是远程root帐户.正确的SQL命令:
update user set Password=PASSWORD('***') where User='root' and Host="不填则为任意主机"

所以,为了方便区分帐户,最好命名两个不同的管理员帐户来进行本地管理或远程管理.
回复
php_jsp 2004-10-19
可以换一种方法修改密码试试!
回复
bkwuk 2004-10-19
在线等回复,敬请阅帖者踊跃发表你的观点,谢过了~
回复
bkwuk 2004-10-19
通过SQL命令设置MYSQL用户密码必须要使用PASSWORD()函数啊
回复
alphawin 2004-10-19
用户名或密码错误时也会出现此报错
你的sql语句很奇怪啊,是不是意思
update user set Password='PASSWORD' where User='root' ?
回复
bkwuk 2004-10-19
附配置清单:
mysql1.4

tomcat5

mm.mysql-2.0.4-bin.jar

windowsXP
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告