Glassfish 将 JDBC 池从本地主机更改为 127.0.0.1
Glassfish change JDBC Pool from localhost to 127.0.0.1
这是我的 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
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 table.
中的密码匹配
SELECT password FROM mysql.user WHERE user = 'user' and host = '127.0.0.1';
SELECT PASSWORD('supersecretpassword') ;
并比较哈希值。
返回的错误消息看起来像是来自 MySQL 服务器:
Access denied for user 'user'@'127.0.0.1' (using password: YES)
这表明通过端口 3306 成功进行了 TCP 握手,并且 MySQL 服务器正在尝试进行身份验证:user='user'、host='127.0.0.1' 和密码=密码('XXX').
用户不在 mysql.user table 中,密码不正确,或者(可能)用户对数据库='db' 没有权限。
(如果 DML 更改应用于 mysql 数据库中的权限 table,请发出 FLUSH PRIVILEGES 以使这些更改生效。(如果使用以下命令应用更改,则不需要 FLUSH PRIVILEGES GRANT 和 REVOKE 语法,只有在使用 INSERT、UPDATE、DELETE 应用更改时才需要。)
这是我的 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
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 table.
中的密码匹配SELECT password FROM mysql.user WHERE user = 'user' and host = '127.0.0.1';
SELECT PASSWORD('supersecretpassword') ;
并比较哈希值。
返回的错误消息看起来像是来自 MySQL 服务器:
Access denied for user 'user'@'127.0.0.1' (using password: YES)
这表明通过端口 3306 成功进行了 TCP 握手,并且 MySQL 服务器正在尝试进行身份验证:user='user'、host='127.0.0.1' 和密码=密码('XXX').
用户不在 mysql.user table 中,密码不正确,或者(可能)用户对数据库='db' 没有权限。
(如果 DML 更改应用于 mysql 数据库中的权限 table,请发出 FLUSH PRIVILEGES 以使这些更改生效。(如果使用以下命令应用更改,则不需要 FLUSH PRIVILEGES GRANT 和 REVOKE 语法,只有在使用 INSERT、UPDATE、DELETE 应用更改时才需要。)