无法连接到MySQL - 不允许主机

Joh*_*n S 8 mysql

我刚刚开始使用Hibernate,当我最终尝试启动web-app时,我收到以下错误:

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"
Run Code Online (Sandbox Code Playgroud)

这真是令人沮丧.为什么我不是本地主机?什么是192.168.1.7?我可以授予像类似问题的答案所说的特权,但为什么我不是localhost呢?

我理解这里的问题,hbm2ddl设置被设置为create,所以它想要创建给定的表但是没有得到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>
Run Code Online (Sandbox Code Playgroud)

Ola*_*che 11

查看您的hibernate配置文件.有一个条目

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

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

接下来看看mysql.连接到mysql并检查权限:

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

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

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

要么

mysql>授予衣服的所有权限.*至'root'@'192.168.1.7'由'密码'标识;

然后

mysql> flush特权;

  • 我在192.168.1.7上没有授权,但是如何以localhost而不是192.168.1.7连接? (2认同)

Aug*_*sto 6

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

CREATE USER '${username}'@'%' IDENTIFIED BY '${password}';
GRANT ALL ON *.* TO '${username}'@'%';
Run Code Online (Sandbox Code Playgroud)

这将允许您从任何主机连接到mysql.192.168.1.7是您计算机的IP.

如果要保护db实例,请阅读mysql文档的这一部分.