java - 急:部署jsp应用出现 Access denied for user 'root'@'localhost'
PHPz
PHPz 2017-04-17 11:48:04
[Java讨论组]

环境是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.(ConnectionImpl.java:773)
com.mysql.jdbc.JDBC4Connection.(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

......

PHPz
PHPz

学习是最好的投资!

全部回复(5)
高洛峰

首先确认防火墙开放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

成功登陆即可

PHP中文网

数据库没有权限。

天蓬老师

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

mysql>grant all privileges on *.* to joe@10.163.225.87 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文件。

PHPz

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

还是无法解决。

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

迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号