9

我刚刚开始使用 Hibernate,当我最终尝试启动网络应用程序时,我收到以下错误:

2012-nov-14 12:54:23 org.hibernate.tool.hbm2ddl.SchemaExport execute
ERROR: HHH000231: Schema export unsuccessful
java.sql.SQLException: null,  message from server: "Host '192.168.1.7' is not allowed to
connect to this MySQL server"

这真是令人沮丧。为什么我不是本地主机?什么是 192.168.1.7?我可以像类似问题的答案所建议的那样授予特权,但为什么我不是本地主机?

我理解这里的问题,hbm2ddl 设置被设置为创建,所以它想要创建给定的表但没有从 MySQL 服务器获得许可。

我正在 Eclipse 中开发一个 struts2/hibernate 应用程序,我使用 Tomcat,当然还有 MYSQL。

提前致谢!

编辑:(hibernate.cfg.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="connection.driver_class"> com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/clothes</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>

    <property name="connection.pool_size">1</property>
    <property name="dialect"> org.hibernate.dialect.MySQLDialect</property>

    <property name="show_sql">true</property>

    <!-- Needs to be disabled in production! -->
    <property name="hbm2ddl.auto">create</property>

    <mapping class="johanstenberg.clothes.serverobjects.AdEntity"/>
    <mapping class="johanstenberg.clothes.serverobjects.AuthenticationEntity"/>
    <mapping class="johanstenberg.clothes.serverobjects.UserEntity"/>
    <mapping class="johanstenberg.clothes.serverobjects.VerificationKeyEntity"/>
</session-factory>
</hibernate-configuration>
4

3 回答 3

13

查看您的休眠配置文件。有一个条目

<property name="connection.url"> ... </property>

您必须更改此条目以连接到 localhost 的 mysql。

接下来看看mysql。连接mysql并查看权限:

$ mysql -u root -p
mysql> 显示 'root'@'localhost' 的授权;
mysql> 显示 'root'@'192.168.1.7' 的授权;

如果适当的数据库或表没有授权,请添加它们:

mysql> 授予衣服的所有权限。* 到 'root'@'localhost' 由 'password' 标识;

或者

mysql> 将衣服上的所有权限。* 授予由 'password' 标识的 'root'@'192.168.1.7';

进而

mysql> 刷新权限;

于 2012-11-14T12:17:39.290 回答
6

在您的 MySQL 实例上运行此命令(替换令牌)

CREATE USER '${username}'@'%' IDENTIFIED BY '${password}';
GRANT ALL ON *.* TO '${username}'@'%';

这将允许您从任何主机连接到 mysql。192.168.1.7 是你电脑的ip。

如果您想保护您的数据库实例,请阅读mysql 文档的这一点。

于 2012-11-14T12:15:05.160 回答
0

您需要执行几个步骤:

Step1:在 my.conf 上做一些配置

sudo vi /etc/mysql/my.cnf
bind-address = 0.0.0.0

Step2:转到mysql命令((“your_remote_ip”是要访问您的mysql的电脑))

mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'your_mysql_username'@'your_remote_ip'IDENTIFIED BY 'your_mysql_password' WITH GRANT OPTION;

Step3:你可以在mysql上查看它的配置

use mysql;

select user, host from user;

第四步:重启你的mysql

sudo /etc/init.d/mysql restart
于 2014-06-02T19:22:56.543 回答