【问题标题】:Glassfish change JDBC Pool from localhost to 127.0.0.1 [duplicate]Glassfish 将 JDBC 池从 localhost 更改为 127.0.0.1 [重复]
【发布时间】:2017-03-01 21:54:46
【问题描述】:

这是我的 JDBC 连接池配置:

<jdbc-connection-pool max-pool-size="300" steady-pool-size="3" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="teDS" wrap-jdbc-objects="false" connection-validation-method="auto-commit" res-type="javax.sql.DataSource">
  <property name="URL" value="jdbc:mysql://localhost:3306/db"></property>
  <property name="port" value="3306"></property>
  <property name="DatabaseName" value="db"></property>
  <property name="serverName" value="localhost"></property>
  <property name="password" value="XXX"></property>
  <property name="url" value="jdbc:mysql://localhost:3306/db"></property>
  <property name="user" value="user"></property>
</jdbc-connection-pool>

请帮帮我

但是我 PING 连接有这个错误:

发生错误 teDS 的 Ping 连接池失败。无法分配连接,因为:用户 'user'@'127.0.0.1' 的访问被拒绝(使用密码:YES)请查看 server.log 了解更多详细信息。

Ping ERROR

【问题讨论】:

    标签: java mysql jdbc glassfish


    【解决方案1】:

    MySQL 中的用户由用户名和主机标识。

    要允许连接,我们需要在 MySQL 中创建一个用户名和主机匹配的用户。创建完全匹配的用户:

     GRANT USAGE ON *.* TO 'user'@'127.0.0.1' IDENTIFIED BY 'supersecretpassword' ;
     GRANT SELECT, INSERT, UPDATE, DELETE ON somedatabase.* TO 'user'@'127.0.0.1' ;
    

    要复制现有用户的权限,我们可以使用 SHOW GRANTS 语句来提取其他用户的权限

     SHOW GRANTS FOR 'user'@'localhost'
    

    我们可以从中复制输出,并将其用作新用户的 GRANT 语句的基础,将“localhost”替换为“127.0.0.1”。

    作为另一种选择,也可以使用“%”通配符来创建主机名用户,而不是“127.0.0.1”。这将允许来自任何 IP 地址的连接。


    如果用户存在,那么密码可能是错误的。验证池配置使用的密码是否与存储在 mysql.user 表中的密码相匹配。

    SELECT password FROM mysql.user WHERE user = 'user' and host = '127.0.0.1';
    
    SELECT PASSWORD('supersecretpassword') ;
    

    并比较哈希值。

    返回的错误消息看起来像是来自 MySQL 服务器:

    用户'user'@'127.0.0.1'的访问被拒绝(使用密码:YES)

    这表明通过端口 3306 的 TCP 握手成功,并且 MySQL 服务器正在尝试进行身份验证:user='user'、host='127.0.0.1' 和 password=PASSWORD('XXX')。

    要么用户在 mysql.user 表中不存在,要么密码不正确,要么(可能)用户没有对 database='db' 的权限。

    (如果 DML 更改应用于 mysql 数据库中的权限表,请发出 FLUSH PRIVILEGES 以使这些更改生效。(如果使用 GRANT 和 REVOKE 语法应用更改,则不需要 FLUSH PRIVILEGES,仅在更改时才需要)使用 INSERT、UPDATE、DELETE 应用。)

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多