当前位置: 首页 > 知识库问答 >
问题:

在jdbc连接java中设置mysql用户主机

景元忠
2023-03-14

我试图连接到javahtml" target="_blank">远程mysql服务器,从ip111.111.111.111到ip111.111.111.222JDBC连接器:

conn = DriverManager.getConnection("jdbc:mysql://"+serverAddress+":3306/" + this.dBName + "?" + "user=" + this.userName + "&password=" + this.password + "");
  • user@111.111.111.111在数据库中创建,GRANTS工作正常。
  • 数据库中不存在user@localhost,因为我认为没有必要。
  • 防火墙允许连接。

由于某种原因,当我尝试启动连接时,会生成一个异常:

java.sql.SQLException: The user specified as a definer ('user'@'localhost') does not exist

但我请求IP111.111.111.111连接

注意:当我在用户名中写入@时,会显示正确的主机ip,但会附加@,如下所示:

java.sql.SQLException: Access denied for user 'user@'@'111.111.111.111' (using password: YES)

那么,我做错了什么?或者如何设置mysql用户名的主机?

编辑:

此外,我已经通过终端测试了mysql连接,它可以正常工作:(so@SSSip是111.111.111.111)

so@SSS:~$ mysql -h 111.111.111.222 -u user -p dbname
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 85
Server version: 5.7.17 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables;
+---------------------+
| Tables_in_dbname |
+---------------------+
| wh_with_customer    |
+---------------------+
10 rows in set (0,00 sec)

共有1个答案

许兴文
2023-03-14

从我的角度来看,您没有向用户授予权限

GRANT ALL PRIVILEGES ON *.* TO 'user'@'111.111.111.111' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

执行它并将PASSWORD替换为您的真实密码。

或者,尝试使用DriverManager。getConnection(字符串url、字符串用户、字符串密码)除

DriverManager.getConnection("jdbc:mysql://"+serverAddress+":3306/" + this.dBName + "?" + "user=" + this.userName + "&password=" + this.password + "");

驾驶员管理器。getConnection(字符串url)要求url采用jdbc:subtocol:subname格式,getConnection(url、用户名、密码)更精确

 类似资料:
  • 问题内容: 因此,我在项目的构建路径中添加了MySQL Connector / J 5.1.16。我正在使用默认的OSX Java软件包和MAMP Pro 1.9.4,以及MySQL 5.1.44和Eclipse。 我用以下功能设置了一个简单的Java应用程序: 当我运行它时,出现以下错误: 我用谷歌搜索了大约一个小时,没有成功。有想法该怎么解决这个吗?JDBC驱动程序应该很好,我对此进行了测试。

  • 我正在尝试使用重试逻辑来获取JDBC连接,以防出现SQL异常,例如: 我目前无法测试,因此需要一些帮助。 如果我遇到异常,然后重试后可以登录,这将很好地工作。但是如果我们没有得到异常,它将到达finally块并关闭连接。最后试着抓住里面的while循环。 所以如果我关闭我的连接,流动如果达到 while(null==连接) 我的连接对象在关闭后会变为null吗? 或者是否有其他方法来实现重试部分?

  • 我的MySQL模块有一些问题,我的本地JBoss。 在$jboss_home中,我创建了com/mysql/main,并删除了mysql-connector-java-5.1.26-bin.jar和module.xml 然后配置数据源。 NetBeans:7.3.1;Mysql连接器:5.1.26;应用服务器:JBoss EAP 6.1.0;MySQL:5.6.14;Windows 7;Java

  • 问题内容: 我将SQL Server 2014更新为最新的修订包( 12.0.5207 )。在环境中,唯一启用的协议是TLS1.2(已为此目的设置了注册表项)。我可以使用Management Studio在本地和远程使用SA帐户连接到SQL Server。 但是,当我尝试使用Java代码和JDBC驱动程序 sqljdbc42.jar 建立与SQL Server的连接时,会引发以下异常: 驱动程序无

  • 问题内容: 我们使用JDBC的标准代码部分是… 问题1:使用连接池时,是否应该在最后关闭连接?如果是这样,合并的目的就不会丢失吗?如果不是,那么DataSource如何知道何时释放Connection的特定实例并可以重用?我对此感到有些困惑,任何指针都表示赞赏。 问题2:以下方法是否接近标准?看起来像是尝试从池中获取连接,并且如果无法建立DataSource,请使用老式的DriverManager

  • 我在我的java应用程序中使用hive JDBC1.0来创建与hive服务器的连接并执行查询。我想从java代码中设置空闲配置单元连接超时。就像say一样,用户首先创建配置单元连接,如果配置单元连接在接下来的10分钟内保持空闲,那么该连接对象将过期。如果用户在10分钟后使用相同的连接对象执行查询,那么配置单元jdbc将抛出错误。你能告诉我通过java代码实现这一点的方法吗。 我知道配置单元中有一个