java.sql.SQLException:用户 'app1'@'127.0.0.1' 的访问被拒绝(使用密码:YES)
java.sql.SQLException: Access denied for user 'app1'@'127.0.0.1' (using password: YES)
所以我使用以下命令在我的云服务器上创建了一个数据库:
mysql> create database app1;
Query OK, 1 row affected (0.02 sec)
mysql> grant all privileges on app1.* TO 'app1'@'localhost'
identified by 'abcdefg';
Query OK, 0 rows affected (0.02 sec)
然后我更新了我的 persistance.xml 如下:
<persistence-unit name="app1">
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/app1" />
<property name="javax.persistence.jdbc.user" value="app1" />
<property name="javax.persistence.jdbc.password" value="abcdefg" />
<property name="javax.persistence.schema-generation.database.action"
value="create" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
但是当我尝试从浏览器访问该站点时仍然出现此错误:
java.sql.SQLException: Access denied for user 'app1'@'127.0.0.1' (using password: YES)
我确认用户存在:
SELECT User FROM mysql.user;
什么可能导致此问题?
问题是您创建了一个用户,该用户只能通过本地套接字从本地计算机进行连接,而不是通过 TCP/IP JDBC 正在尝试做的事情。您可以阅读 JDBC MySQL connection using Unix Socket 了解如何使用本地套接字连接到 MySQL 或为主机 127.0.0.1
创建用户,该用户将用于 TCP/IP 连接。
所以我使用以下命令在我的云服务器上创建了一个数据库:
mysql> create database app1;
Query OK, 1 row affected (0.02 sec)
mysql> grant all privileges on app1.* TO 'app1'@'localhost'
identified by 'abcdefg';
Query OK, 0 rows affected (0.02 sec)
然后我更新了我的 persistance.xml 如下:
<persistence-unit name="app1">
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/app1" />
<property name="javax.persistence.jdbc.user" value="app1" />
<property name="javax.persistence.jdbc.password" value="abcdefg" />
<property name="javax.persistence.schema-generation.database.action"
value="create" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
但是当我尝试从浏览器访问该站点时仍然出现此错误:
java.sql.SQLException: Access denied for user 'app1'@'127.0.0.1' (using password: YES)
我确认用户存在:
SELECT User FROM mysql.user;
什么可能导致此问题?
问题是您创建了一个用户,该用户只能通过本地套接字从本地计算机进行连接,而不是通过 TCP/IP JDBC 正在尝试做的事情。您可以阅读 JDBC MySQL connection using Unix Socket 了解如何使用本地套接字连接到 MySQL 或为主机 127.0.0.1
创建用户,该用户将用于 TCP/IP 连接。