急:部署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>
......
Answers
@Honwhy 已经执行过grant all privileges on . to joe@'%.weixin.com` identified by ‘123′;
还是无法解决。
@DannyWangX 已经设置了数据库权限。
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文件。
首先确认防火墙开放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
成功登陆即可