Q23:新しくDBサーバ用に設定したパソコンBに対して、A、Cからアクセスすることができません。
Q23-1:
現在MySQLを利用した生産工程管理システムを新しく作ろうとしているのですが、データベース用のサーバパソコンと、その他パソコンとの通信で問題が発生しています。
現在、DBサーバ用に設定しているデスクトップAに対してハブで繋がっているパソコンB、Cからアクセスし、書き込みや読み込みができることは確認しました。
しかし、新しくDBサーバ用に設定したパソコンBに対して、A、Cからアクセスすることができません。
全てのパソコンにJDBCは入っており、動作を確認済みです。
サーバ名もちゃんとBのパソコンの名前に書き換えてあります。
エラーは下記のとおりです。
データベースのアクセス中にエラーが発生しました
(Exception:null, message from server: "Host'Peak3'is not allowed to connect to this MySQ...)
ここでPeak3はアプリケーションビルダーを実行してあるパソコンAサーバとしているのはPeak19であるパソコンBです。
接続設定は
ドライバ com.mysql.jdbc.Driver
サーバ jdbc:mysql://peak19/
となっています。
ただ、まったく同じアプリケーションを使用し
ドライバ com.mysql.jdbc.Driver
サーバ jdbc:mysql://peak3/
の設定でPeak19からPeak3に書き込むことは可能でした。
両方のパソコンにMySQLはインストールしてあるのですが、Peak3にしか書き込めないという状況です。
エラーが出ているのはMySQLの設定でしょうか?それともJDBCの関連でしょうか?
A23-1:
サーバ用のMySQLデータベースの設定に因る可能性があります。
通常、設定の変更をしない限り、MySQLのuserにはlocalhost以外からのアクセス権は与えられません。外部のマシンから接続するには、権限を変更する必要があります。
『MySQL 4.1 リファレンスマニュアル
4.3.12. Access denied エラーの原因
http://dev.mysql.com/doc/refman/4.1/ja/access-denied.html』
(工程管理システム導入マニュアルにあるMySQLDBのセットアップでは、
「Enable root access from remote machine」を有効にするようお願いしています。実際の運用ではセキュリティを考慮し、より細かい設定が必要です)
mysqlデータベース内のuserテーブル等の内容はMZPlatformのサンプルアプリケーション「データベースアクセス.mzax」を使って頂ければ、簡単に確認できるかと存じます。
権限の変更の仕方については
『MySQL 4.1 リファレンスマニュアル
4.4.1. GRANT および REVOKE の構文
http://dev.mysql.com/doc/refman/4.1/ja/grant.html』
『MySQL 4.1 リファレンスマニュアル
4.4.5. MySQL への新規ユーザの追加
http://dev.mysql.com/doc/refman/4.1/ja/adding-users.html』
『MySQL 5.1 リファレンスマニュアル
4.8.2. MySQL への新規ユーザの追加
http://dev.mysql.com/doc/refman/5.1/ja/adding-users.html』
をご参照ください。
例えば「testというデータベースにある全テーブルに対して、192.168.0番台のIPからユーザーuser01はパスワードpasswordで接続し、select、updateが使える」という権限を与えるSQL文は
「Grant select, update on test.* to 'user01'@'192.168.0.%' identified by 'password';」となります。