急:部署jsp应用出现 Access denied for user 'root'@'localhost'


环境是ubuntu server 12.04+jkd7+tomcat7+mysql5 已搭建好. mysql成功启动,可以外部远程连接。
但是app(是一款运行在微信内的微网站)还是跑不起来。

收到一下错误:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

求大家提供解决办法,谢谢!这款应用的开发公司不肯告诉我部署方法,每次重新部署都得找它们,太气人了~~只好自己动手。

全部提示:
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.hibernate.exception.GenericJDBCException: Cannot open connection
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)

......

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3536)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3468)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:917)
com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3974)
com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1282)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2142)
com.mysql.jdbc.ConnectionImpl. <init> (ConnectionImpl.java:773)
com.mysql.jdbc.JDBC4Connection. </init> <init> (JDBC4Connection.java:46)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:534)
com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.jav </init>

......

java app mysql Ubuntu JSP

Vincy 10 years, 4 months ago

你去这个app的本机上跑一个命令 mysql -uroot -h localhost -p 看看能不能连接上数据库。
如果可以,说明你的app的数据库配置有问题
如果不可以,说明你的数据库权限配置有问题

ayair answered 10 years, 4 months ago

@Honwhy 已经执行过grant all privileges on . to joe@'%.weixin.com` identified by ‘123′;

还是无法解决。

@DannyWangX 已经设置了数据库权限。

Akazhuo answered 10 years, 4 months ago

MySQL的权限设置问题吧?
参考地址 http://blog.csdn.net/wengyupeng/article/details/3290415


 mysql>grant all privileges on *.* to [email protected] identified by ‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

也有指定地址的方式


 mysql>grant all privileges on *.* to joe@'%.weixin.com` identified by ‘123′;

joe应该成功你指定的MySQL登陆用户;
joe@'%.weixin.com'将weixin.com替换成微网站的域名,或者改成微网站发起链接的IP地址。

EDIT:
我仔细考虑这个
'root'@'localhost'错误,你的数据库连接是从本地发起的,额,确保localhost的IP是127.0.0.1,看/etc/hosts文件。

依文丶洁琳 answered 10 years, 4 months ago

数据库没有权限。

路过啊路过 answered 10 years, 4 months ago

首先确认防火墙开放mysql端口,使用 telnet 3306 检测,若mysql端口已开放,则需要用以下命令授权


 **mysql-server**
#mysql -uroot -p
>grant all privileges on database.table to user @'app服务器IP地址' identified by 'passwd' ;
>flush privileges;

然后在app服务器的主机执行


 mysql -uuser -ppasswd -h$mysql-server-ip

成功登陆即可

新世界的卡米 answered 10 years, 4 months ago

Your Answer