投稿日:2003年02月18日 作成鷹の巣

No.8478 Linux上のMySQLにWindowsからアクセスできない



Linux上のMySQLにWindowsからアクセスできない

No.8478 投稿時間:2003年02月18日(Tue) 13:05 投稿者名:りょうパパ2号 URL:http://ryo-papa-2nd.dyndns.org/

Linux8上にMySQL(3.23.52-3)を稼動させました。
Linuxのターミナルコンソール上からデータベース作成やテーブル作成、データの追加(SQLコマンドで)など普通に作成できています。
これを別のWindowsパソコン(2000またはXP)からMyODBCを使ってACCESS2000から接続しようとすると、
------------------------------------------------------------------------------
ODBC--呼び出しが失敗しました。
[MySQL][ODBC 3.51 Driver]Lost connection to MySQL server during query (#2031)
------------------------------------------------------------------------------
と言うエラーメッセージがAccess2000から出力され接続できません。(旧バージョン2.50.24でも同じでした)
データの管理をWindows側から行いたいと考えています。
TCP/IP接続になるためnetstatコマンドでMySQLのポート番号3306を確認したところ開いているようでした。
パーソナルファイアウォールの設定もsetupコマンドにて「No Firewall」に設定しました。
(気になることが1点、「No Firewall」にしても、次回見るとセキュリティレベルが「High」に戻っているのは普通なのでしょうか?)

個人レベルではもう調べ尽くしました。皆様アドバイスください。よろしくお願いします。


おそらく、ユーザーの権限の問題だと思います。

No.8479 投稿時間:2003年02月18日(Tue) 15:15 投稿者名:水芹 URL:

こんにちは。

おそらく、ユーザーの権限の問題だと思います。
MySQLでは、ユーザー名、パスワードの他にそのユーザーがどこから接続してくるのかを管理しています。
たしかuserというテーブルで定義されていたと思いますが・・・。

初期値では、localhostからの接続しかできません(だったと思います)。これをワイルドカード"%"にするとどこからでも接続できます。くわしくはMySQLのドキュメントの特権テーブルあたりに書かれていると思います。

# あいまいな記憶で申し訳ないです。そして外していたらごめんなさい。


Windows上からMyODBCでアクセスできてます。

No.8483 投稿時間:2003年02月18日(Tue) 22:11 投稿者名:かつ URL:http://www.kkoba.com/

> こんにちは。
>
> おそらく、ユーザーの権限の問題だと思います。
> MySQLでは、ユーザー名、パスワードの他にそのユーザーがどこから接続してくるのかを管理しています。
> たしかuserというテーブルで定義されていたと思いますが・・・。
りょうパパさん、水芹さんこんばんは。

http://www.atmarkit.co.jp/flinux/rensai/mysql04/mysql04b.html
にある、grant関連のところはどうでしょう?

Accessではありませんが(Brio Explorerってやつです)、Windows上からMyODBCでアクセスできてます。


Access2000での注意点が載っています。

No.8484 投稿時間:2003年02月18日(Tue) 23:48 投稿者名:かつ URL:http://www.kkoba.com/

あと、ここも見てください。
Access2000での注意点が載っています。
http://www.mysql.gr.jp/jpdoc/3.23/manual.ja_ODBC.html#MyODBC_clients

結構色んなことが書いてありました。
・MyODBCの"Return matching rows"をセットする。
・テーブルにプライマリキーを設定しないと更新された行が#Deleted#と表示される。
・更新可能なテーブルの全てに、timestamp を持たせなければなりません。
等々..


権限を与えてもメッセージ変わらずです。

No.8557 投稿時間:2003年02月22日(Sat) 02:22 投稿者名:りょうパパ2号 URL:http://www.ryo-papa-2nd.dyndns.org

水芹さん、かつさんアドバイスありがとうございます。
私の持っているマニュアルでは、ユーザの権限の設定が後ろの方のページに書いてありました。
http://www.slis.keio.ac.jp/~atsushi/webdb/mysql_7.html
こちらのページの方が分かりやすかったので参考にしてみました。
確かに、select * from user; で確認したらlocalhostのみしか許可していなかったので、
「これで解決!」と思ったのですが、結果はメッセージ変わらずで、いまだに接続できません。
世の中ではACCESS2000での接続の実績があるようなので、私の設定の仕方が悪いのだと思いますが。
それにしても、何とかしたいです。


logはこのように書かれています

No.8655 投稿時間:2003年02月25日(Tue) 08:38 投稿者名:りょうパパ2号 URL:http://ryo-papa-2nd.dyndns.org/

かれこれ、10日ほど悩んでいます。
"mysql.log"(ログファイル)の内容ですが、以下のように書かれています。
---------------------- 翻訳前 --------------------------------
Number of processes running now: 1
mysqld process hanging, pid 2481 - killed
030224 17:59:02 mysqld restarted
Cannot initialize InnoDB as 'innodb_data_file_path' is not set.
If you do not want to use transactional InnoDB tables, add a line
skip-innodb
to the [mysqld] section of init parameters in your my.cnf
or my.ini. If you want to use InnoDB tables, add to the [mysqld]
section, for example,
innodb_data_file_path = ibdata1:10M:autoextend
But to get good performance you should adjust for your hardware
the InnoDB startup options listed in section 2 at
http://www.innodb.com/ibman.html
/usr/libexec/mysqld: ready for connections
----------------------------------------------------------------
「InnoDBがどうのこうの」と書かれているようですが、翻訳ページで翻訳すると、
--------------------- 翻訳後 ------------------------------------
今走るプロセスの数:mysqldプロセスを掛けて(1つの)pid 2481-再開された030224 17:59:02 mysqldを殺しました。「innodb_data_file_path」がセットでないとともに、InnoDBを初期化することができません。あなたが業務処理のInnoDBテーブルを使用せず、ライン・スキップ-innodbを加える場合あなたのmy.cnfかmy.iniの中のinitパラメーターの[mysqld]セクションに。あなたがInnoDBテーブルを使用したく、[mysqld]セクション(例えばinnodb_data_file_path=ibdata1:10M:autoextend)を増す場合しかし、よいパフォーマンスを得るために、ハードウェアの?スめにhttpでセクション2つごとにリストされたInnoDB操業開始オプションを調節するべきです://www.innodb.com/ibman.html/usr/libexec/mysqld:接続の準備ができています。
----------------------------------------------------------------
いずれにしても、理解できず困っています。
Access2000側のメッセージも以前と同じです。
ちなみにDBのサイズ?のところは10M、100M、500Mと試してみましたが結果変わらずでした。
よろしくお願いします。


外部から接続できないというのは、やはり特権テーブルの設定だと思うのですが。

No.8659 投稿時間:2003年02月25日(Tue) 12:32 投稿者名:水芹 URL:http://www.dream-seed.com/

こんにちは。

このログ自体は今回の件とは無関係です。
InnoDBというのはMySQLのトランザクション対応機能で、「この設定がないから初期化できないよ。使わないならいいけど使うならちゃんと設定してね」と言われているだけです。

外部から接続できないというのは、やはり特権テーブルの設定だと思うのですが、一度「かねやんMySQLAdmin(http://www.mmdb.net/m_kaneko/)」などを使って接続できるかできないかを確認してみてはどうでしょうか?

あと接続に失敗した際のログには何も出ていないでしょうか?MySQLのログだけでなく、secureやmessegeあたりも見てください。


userテーブルはこんな感じです

No.8664 投稿時間:2003年02月25日(Tue) 15:31 投稿者名:りょうパパ2号 URL:http://ryo-papa-2nd.dyndns.org/

> あと接続に失敗した際のログには何も出ていないでしょうか?MySQLのログだけでなく、secureやmessegeあたりも見てください。

secure、messagesには参考になりそうなことは書かれていないようでした。
「かねやんMySQLAdmin」を早速使ってみましたが、"コネクト失敗"となってしまいます。ただ、サーバ側のアクセスランプが反応しているし、MySQLログもNo.8655で書いたようなメッセージが記録されているようなので、水芹さんのおっしゃる通り特権のユーザ設定のようですね。たぶん。
userテーブルを見ると以下のようになっています。(途中省略ですがYの行は全てY、Nの行は全てNです。パスワードのところは改変してあります)

mysql> select * from user;
+-----------+-------+------------------+-------------+-------| |----+------------+
| Host | User | Password | Select priv | Insert| |riv | Alter priv |
+-----------+-------+------------------+-------------+-------| |----+------------+
| localhost | root | 1a2a3a4a5a6a7a8a | Y | Y | | | Y |
| localhost | | | N | N | | | N |
| localhost | monty | 1b2b3b4b5b6b7b8b | Y | Y | | | Y |
| % | monty | 1b2b3b4b5b6b7b8b | Y | Y | | | Y |
+-----------+-------+------------------+-------------+-------| |----+------------+
ユーザ名に"monty"を使ってます。
このテーブル以外にも何か登録が必要なのでしょうか?


dbテーブルは?

No.8673 投稿時間:2003年02月25日(Tue) 23:36 投稿者名:かつ URL:http://www.kkoba.com/

りょうパパ2号さん今晩は。

userテーブルだけでなく、dbテーブルも確認してみて下さい。
以下のコマンドでアクセス権を追加できます。
grant select,update,insert,delete on DB名.* to 'ユーザ名' identified by 'パスワード';

今試してみたら、以下の環境なら問題なくアクセスできました。
MySQL-3.23.52-3(Linux) --- MyODBC-3.51.04 + MyODBC-3.51.04-conv_ujis + Excel2000(WinXP)


dbテーブル見ました

No.8678 投稿時間:2003年02月26日(Wed) 09:17 投稿者名:りょうパパ2号 URL:http://ryo-papa-2nd.dyndns.org/

> MySQL-3.23.52-3(Linux) --- MyODBC-3.51.04 + MyODBC-3.51.04-conv_ujis + Excel2000(WinXP)

かつさん親切なアドバイスありがとうございます。やっぱり繋がるんですね。(私もEXCEL2000で試してみましたがダメでした)
dbテーブル確認しました。以下のようになってます。
+----------+---------+-------+-------------+-------------+-------------+-----+
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Dele|
+----------+-----------+-------+-------------+-------------+-------------+-----+
| % | test | | Y | Y | Y | Y |
| % | test\_% | | Y | Y | Y | Y |
| % | db | monty | Y | Y | Y | Y |
| % | mysql_test | monty | Y | Y | Y | Y |
+---------+-----------+-------+-------------+-------------+-------------+-----+
今回、'mysql_test'というdbにアクセスしようとしています。
そのほかのテーブル(tables_priv,host,func)は'Empty'となっています。
アクセス権の設定などマニュアルどおりに行ったはずなんですがなぜでしょう。

grant all privileges on *.* to monty@'%' identified by 'パスワード' with grant option;
でユーザを作り、
grant select,update,insert,delete on mysql_test.* to monty identified by 'パスワード';
でdbに対するアクセス許可を設定しました。(念のためFLUSH PRIVILEGES;や再起動も実施しました)
Windows側のMDAC2.7(msのODBCパッチ)もあてたし...。

いろいろと、やっては見たものの、半ば諦めモード入りそうです。
かつさんのLinuxバージョンはいくつですか?
私のは、Linux8 PublisherEdition(雑誌付録)です。
殆んどのRPMパッケージはインストール時のウィザードで選択し、自動でインストールされます。
ひょっとして、RPMパッケージの入れ方に問題があったりしますか?
APACHE2.0、MySQL3.23.52、samba2.2.5、xinetd2.3.7...etc、など。
マニュアルは技術評論社の「MySQL徹底攻略ガイド」http://www.hi-ho.ne.jp/tsumiki/book_1.htmlを参考にしてます。
でも、設定していて若干違いがあるようなので、Linux7.3以前のマニュアルだと思いますが。
もう一度、Linux8専用のマニュアルでも探してみようか考え中です。場合によっては7.3ダウングレード(入れなおし)も検討中です。
そのほうがマニュアルも豊富ですしね。
でも、"くやしぃー"から、もう少し頑張ります!!!!!!


結論は、「3.23.53にアップデートせよ」ということになっています。

No.8680 投稿時間:2003年02月26日(Wed) 11:48 投稿者名:水芹 URL:http://www.dream-seed.com/

こんにちは。

いまさらながら、ログをみてみるとハングしてるんですね・・・。
---------------------------------------------------
Number of processes running now: 1
mysqld process hanging, pid 2481 - killed
030224 17:59:02 mysqld restarted


/usr/libexec/mysqld: ready for connections
---------------------------------------------------
外部から接続するとプロセスが死んで、再起動しているようです。

で、それっぽい話題をみつけました。
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=6437

ここでの結論は、「3.23.53にアップデートせよ」ということになっていますが、
本家MLをまだちゃんと見ていないので3.23.52でも同様にアップデートが必要なのかどうかは分かりません。

# 本家ML(http://lists.mysql.com/)で検索してみたのですが上手くヒットしない、というか検索結果が見づらいです・・・。


解決!

No.8685 投稿時間:2003年02月26日(Wed) 17:35 投稿者名:りょうパパ2号 URL:http://ryo-papa-2nd.dyndns.org/

繋がりました!
MySQL-3.23.55-1にアップすることで解決しました。(今までの苦労がウソのように)
根気良く私にアドバイスくださった「水芹さん」、「かつさん」ありがとうございました。
念のため、今後の方のために方法を書いておきますと、
1.RedHat Linux8同梱の(既にインストール済みの)MySQL-3.23.52をX-Windowの「システム設定」-「パッケージ」からアンインストールする。
2.以下のパッケージをダウンロードして適当なファイルに置く。(MySQL)
MySQL-3.23.55-1.i386.rpm
MySQL-client-3.23.55-1.i386.rpm
DBI-perl-bin-0.93-rh50.1.i386
Mysql-DBI-perl-bin-1.1825-rh40.1 RPM for i386
MySQL-bench-3.23.55-1.i386.rpm
MySQL-devel-3.23.55-1.i386.rpm
MySQL-shared-3.23.55-1.i386.rpm
この3箇所から集められます。
http://www.mysql.jp/MySQL/Downloads/
http://at.rpmfind.net/opsys/linux/RPM/mysql/MySQL-3.21/RPMS/i386/Mysql-DBI-perl-bin-1.1825-rh40.1.i386.html
http://at.rpmfind.net/opsys/linux/RPM/DBI-perl-bin.html
3.2で集めたファイルを上から順番にX-Window上でダブルクリックしてインストールする。(RPMコマンドでもOKですが、順番にやらないとあれが無いこれが無いと叱られる)
4./etc/my.cnf.rpmsaveをエディタで開き修正して保存し、さらに拡張子の後ろの.rpmsaveを消す。(my.cnfと言う名前にする)
5.「サーバ設定」-「サービス」でmysqldを開始する。
です。

追伸です。
実は、PHPもまともに動いてないのでした。ので、また近いうちこのページでお世話になるかも...。
今後ともよろしくお願いします。


|目次|掲示板|過去ログ目次|▲頁先頭|