9

Hibernate の使用を開始したばかりで、最終的に Web アプリを起動しようとすると、次のエラーが発生します。

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> show grants for 'root'@'localhost';
mysql> 'root'@'192.168.1.7' の許可を表示します。

適切なデータベースまたはテーブルに対する許可がない場合は、それらを追加します。

mysql> clothes.* に対するすべての権限を「password」で識別される「root」@「localhost」に付与します。

また

mysql> 'password' で識別される 'root'@'192.168.1.7' に、clothes.* に関するすべての権限を付与します。

その後

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 です。

db インスタンスを保護する場合は、mysql ドキュメントのこの部分をお読みください。

于 2012-11-14T12:15:05.160 に答える
0

実行する必要があるいくつかの手順があります。

ステップ 1: my.conf で設定を行います

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

ステップ 2: 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;

ステップ 4: mysql を再起動します

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