Java JDBC Hibernate-Mysql连接错误
我的Ubuntu11.10桌面上有一个本地mysql服务器。主机名=本地主机;用户名=根;密码=根;数据库名称=CBS。我真的很困惑,因为当我使用Java JDBC Hibernate-Mysql连接错误,java,mysql,hibernate,jdbc,ubuntu-11.10,Java,Mysql,Hibernate,Jdbc,Ubuntu 11.10,我的Ubuntu11.10桌面上有一个本地mysql服务器。主机名=本地主机;用户名=根;密码=根;数据库名称=CBS。我真的很困惑,因为当我使用终端、mysql管理员和mysql查询浏览器访问mysql时,我使用了上面提到的身份验证,一切都正常。我的问题是,在Java应用程序中配置jdbc.properties时,出现以下错误: org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为org.springframework
终端
、mysql管理员
和mysql查询浏览器
访问mysql时,我使用了上面提到的身份验证,一切都正常。我的问题是,在Java应用程序中配置jdbc.properties时,出现以下错误:
org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为org.springframework.jdbc.UncategorizedSQLException:Hibernate操作:无法打开连接;SQL[?]的未分类SQLException;SQL状态[28000];错误代码[1045];拒绝用户“root”@“localhost”的访问(使用密码:是);嵌套异常为java.sql.SQLException:用户“root”@“localhost”的访问被拒绝(使用密码:是)
我的配置文件jdbc.properties:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/CBS
jdbc.username=root
jdbc.password=root
顺便说一下,我之所以使用本地服务器,是因为我们的主服务器关闭了,所以我必须使用本地mysql继续我的项目。请帮帮我。。。提前感谢。您可能需要授予访问数据库的权限 请查看MySQL文档,了解如下内容:
create database pmt;
create user pmt identified by 'pmt';
grant all on pmt.* to 'pmt'@'%';
“pmt”只是上面的一个例子。我碰巧使数据库的名称、用户名和密码都相同。我不建议将其作为最佳实践。这只是我为当地发展所做的事情
我个人不喜欢授予root用户访问任何应用程序的权限。我甚至不会在玩具应用程序中使用root用户名和密码。创建一个新用户并授予适当的权限不需要花费太多精力 您的框架很可能正在以
127.0.0.1
的身份登录本地数据库。如果您没有定义适当的域范围凭据,这将在MySQL中产生登录问题。请尝试以下操作以验证:
mysql -uroot -proot
SELECT * from mysql.user WHERE user = 'root';
如果没有“根”@“127.0.0.1”,则在发现问题后,请执行以下两种操作之一:
mysql -uroot -proot
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
另一方面,我绝对建议您在用户id和密码上使用更具创造性的东西。特别是当您的服务器启用了TCP套接字时。使用mysql adminstrator(或其他工具)时,您的主机名是什么?正如duffymo在下面提到的,您可能会因为该用户连接到本地主机而出现授权问题。我在邮件的第一部分没有看到任何关于主机名的内容。您是否使用根凭据运行“java应用程序”?当你的应用程序运行时-使用“ps-ef | grep”检查它并查看哪个用户正在运行它-如果不是“root”,你的答案就在那里。执行这些命令后我必须重新启动服务器吗?当我运行命令时,从user='root'的用户中选择*;我将使用什么数据库查看是否有“root”@“127.0.0.1”?实际上,这个命令是
select*from mysql.user,其中user='root'代码>。我更新了我的答案。我看到了很多像“+”和“-”这样的随机字符。然而,我看到了这行:| localhost | root |*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y。这是否意味着我有一个根?恩,帮我一个忙,在mysql中执行这个命令,从用户选择user,host from user
,并告诉我有多少行显示了用户“root”,以及这些行的主机字段是什么。我有8行。我看到user=root和host=localhost。