簡體   English   中英

無法連接到MySQL - 不允許主機

[英]Cannot connect to MySQL - host not allowed

我剛剛開始使用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"

這真是令人沮喪。 為什么我不是本地主機? 什么是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>

查看您的hibernate配置文件。 有一個條目

<property name =“connection.url”> ... </ property>

您必須更改此條目以連接到localhost上的mysql。

接下來看看mysql。 連接到mysql並檢查權限:

$ mysql -u root -p
mysql> show for'root'@'localhost';
mysql> show grants for'root'@'192.168.1.7';

如果沒有相應數據庫或表的授權,請添加它們:

mysql>授予衣服的所有權限。*''root'@'localhost'由'password'標識;

要么

mysql>授予衣服的所有權限。*至'root'@'192.168.1.7'由'密碼'標識;

然后

mysql> flush特權;

在MySQL實例上運行此命令(替換令牌)

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

這將允許您從任何主機連接到mysql。 192.168.1.7是您計算機的IP。

如果要保護db實例,請閱讀mysql文檔的這一部分。

您需要執行以下幾個步驟:

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

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

Step2:轉到mysql命令((“your_remote_ip”是想要訪問你的mysql的pc))

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;

Step4:重啟你的mysql

sudo /etc/init.d/mysql restart

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM