Java 尝试从myeclipse中的servlet连接到mysql时拒绝访问

Java 尝试从myeclipse中的servlet连接到mysql时拒绝访问,java,mysql,servlets,Java,Mysql,Servlets,我试图在我的eclipse中使用tomcat服务器运行一个简单的servlet/mysql webapp。 当我试图从servlet连接到数据库时,出现以下错误: org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法创建 PoolableConnectionFactory(拒绝用户'@'localhost'的访问)(使用密码:是)) 下面是我执行的脚本: servlet: import java.io.IOException; 导入java.io

我试图在我的
eclipse
中使用tomcat服务器运行一个简单的
servlet/mysql webapp
。 当我试图从
servlet
连接到
数据库时,出现以下错误:

org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法创建
PoolableConnectionFactory(拒绝用户'@'localhost'的访问)(使用密码:是))
下面是我执行的脚本:

servlet:

import java.io.IOException;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.sql.Connection;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入javax.annotation.Resource;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入javax.sql.DataSource;
公共类EmployeeServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
@资源(name=“jdbc/testDB”)
数据源ds;
公共雇员servlet(){
超级();
}
public void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
试一试{
Connection con=ds.getConnection();
语句stmt=con.createStatement();
String query=“选择*来自员工”;
ResultSet rs=stmt.executeQuery(查询);
PrintWriter out=response.getWriter();
response.setContentType(“text/html”);
打印(“员工详细信息”);
输出。打印(“”);
输出。打印(“”);
打印(“员工ID”);
打印(“员工姓名”);
打印(“工资”);
打印(“部门”);
while(rs.next()){
输出。打印(“”);
打印(“+rs.getInt(“emp_id”)+”);
out.print(“+rs.getString(“emp_name”)+”);
打印(“+rs.getDouble(“工资”)+”);
打印(“+rs.getString(“部门名称”)+”);
输出。打印(“”);
}
输出。打印(“”);
}捕获(SQLE异常){
e、 printStackTrace();
}
}
public void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
}
}
context.xml文件的内容:


WEB-INF/WEB.xml

url中似乎缺少端口号:

jdbc:mysql://localhost:<port>/mysql
jdbc:mysql://localhost:/mysql

尝试从任何其他工具/命令提示符连接到mysql,其中包含代码中用于连接到mysql的所有信息。尝试将端口也包括在连接url中。默认端口为3306

如果您从远程客户端访问数据库,请使用mysql的
GRANT
查询授予您访问数据库的权限。

是否设置了mysql的用户名和密码?如果您从本地主机执行
mysql-u root-proot
操作,是否会出现错误?大多数mysql数据库拒绝所有未设置的传入连接来自与DB相同的机器。您可以更改此设置,但这需要对数据库的完全访问权限,而且因为我的数据库位于共享服务器上,所以我没有此设置,也不知道如何更改它,因为我事先知道我无法更改。请注意,错误消息
拒绝用户''的访问
不包含根用户名。也许context.xml还有其他问题。您使用的是什么tomcat版本?@user1705985实际上您的问题是Xml文件中缺少了未关闭的资源标记。
<?xml version="1.0" encoding="UTF-8"?>
<Context crossContext="true">
  <WatchedResource>WEB-INF/web.xml</WatchedResource>
  <Resource name="jdbc/testDB" auth="Container"
    type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" 
    username="root" password="root"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost/mysql">
</Context>
jdbc:mysql://localhost:<port>/mysql