CSEとは
CSEとは、2001年に公開されたデータベース用クライアントツールです。非常に古くから使用されているツールかつ安定しているため、今でも使用する人がいます。ただし、近年では開発が停滞傾向にあり、新しいバージョンのRDBMS接続や64bitマシン環境では、かなりの苦戦を強いられるでしょう。
このページでは、CSEを用いてMySQLに接続する方法について説明します。
CSE download
CSE公式サイト”http://www.hi-ho.ne.jp/tsumiki/”へアクセスし、”ダウンロード”リンクを押下した後、適当なファイルをダウンロードします。
CSEは特にインストール作業は不要で、展開後にexeファイルを実行するだけで動作させる事ができます。
CSE MySQL 接続方法について
CSEでMySQLへ接続する方法は、ODBC接続する方法とlibmysql.dllを使用する方法の2通りが存在します。このページでは両方の方法を説明しますが、明らかに手間が少なくお勧めできるのはODBC接続です。
CSE MySQL接続 – ODBC
CSE MySQL接続 – ODBC ドライバーのダウンロード
32bit版のMySQL ODBCがインストールされていない場合は、ODBCのダウンロード/インストールを行います。http://dev.mysql.comにアクセスし、”Downloads”, “Community”の順で押下します。
“MySQL Connector”を押下します。
”Connector/ODBC”を押下します。
現時点(2014年07月)ではCSEは32bitのみ対応しています。そのため、64bit PCであっても32bit版のODBCをダウンロードして下さい。
○racle様にSing Upしろと言われますが、丁重に”No thanks, just start my download”とお断りしましょう。”No thanks, just start my download”を押下すると、MSI (インストーラー) ファイルのダウンロードが開始されます。
CSE MySQL接続 – ODBC インストール
ダウンロードしたMSI(インストーラー)ファイルをダブルクリックし、インストーラーを起動させます。
“Next”を押下します。
“I Accept the terms in the license agreement”を選択し、”Next”を押下します。
”Typical”を選択し、”Next”を押下します。
“Install”を押下し、インストールを実行します。
CSE MySQL接続 – ODBC データソースの設定 32bit PCの場合
32bit PCの環境において、ODBC データソースを用いてMySQL接続する方法について説明します。なお、以下はWindows7の場合の設定手順です。コントロールパネルの操作は、Windowsのバージョンによって若干の差異がある事をご了承ください。
“コントロールパネル”, “システムとセキュリティ”, “管理ツール”の順に押下します。
“データソース (ODBC)”をダブルクリックし、”ODBC データソース アドミニストレーター”を起動させます。
“ODBC データソースアドミニストレータ”の画面において、”ユーザ DSN”タブの”追加”を押下します。
“MySQL ODBC 5.3 Unicode Driver”を選択し、”完了”を押下します。ANSIは2バイト文字(例 : 日本語)の取り扱い時にトラブルにつながるのでお勧めしません。
接続情報を入力し”Test”を押下します。テスト接続に成功すると”Connection Successful”と表示され、”Database”欄にデフォルトで接続するデータベースをプルダウンで選べるようになります。
テスト接続に成功しましたら、”OK”を押下します。
“OK”を押下します。
CSE MySQL接続 – ODBC データソースの設定 64bit PCの場合
32bit ODBCデータソースの設定はやや特殊です。
コントロールパネルからODBCの設定を行うと64bit版の”ODBC データソース アドミニストレータ”が起動されますが、実は32bit版の”ODBC データソース アドミニストレータ”も存在します。32bit版, 64bin版 それぞの”ODBC データソース アドミニストレータ”のファイルパスは以下の通りです。
[table “22” not found /]環境変数%WINDIR%はOSのバージョンによって変わる可能性がありますが、Windows7の場合は”C:\Windows\SysWOW64\odbcad32.exe”が32bit版の”ODBC データソース アドミニストレータ”になります。”odbcad32.exe“をダブルクリックして下さい。
“ODBC データソースアドミニストレータ”の画面において、”ユーザ DSN”タブの”追加”を押下します。
“MySQL ODBC 5.4 ANSI Driver”または”MySQL ODBC 5.4 Unicode Driver”を選択し、”完了”を押下します。
接続情報を入力し”Test”を押下します。テスト接続に成功すると”Connection Successful”と表示され、”Database”欄にデフォルトで接続するデータベースをプルダウンで選べるようになります。
テスト接続に成功しましたら、”OK”を押下します。
“OK”を押下します。
CSE MySQL接続 – ODBC 接続
CSEにて、ODBCを用いたデータベース接続方法について説明します。
CSE.exeをダブルクリックで実行します。”データベース”, “接続”の順で押下し、接続メニューを表示させます。DBMSは”ODBC汎用”を選択し、適当なデータソース, ユーザ名, パスワードを入力します。
”MySQL version X.X.XXに接続されました”とのメッセージから、MySQLに接続された事を確認します。
なお、64bit ODBCドライバーを用いたデータソースを使用すると、以下のようなエラーメッセージが表示されます。今後の64bit対応に期待しましょう。
アプリケーション実行中に以下のエラーが発生しました。 エラー内容 : データベース接続時にエラーが発生しました。 DBエラー詳細 : エラーコード : 0 [Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が 含まれています。
CSE MySQL接続 – libmysql.dll
CSE MySQL接続 – libmysql.dll エラーメッセージの確認
おそらく多くの人がはまるエラーメッセージは以下であると思います。このlibmysql.dllの対応方法について説明します。
アプリケーション実行中に以下のエラーが発生しました。 エラー内容 : データベース処理用ダイナミックリンクライブラリをロード時にエラーが発生しました。 DBエラー詳細 : 「libmysql.dll」ロード時にエラーが発生しました。
CSE MySQL接続 – libmysql.dllのダウンロード
libmysql接続で一番苦戦するのは、libmysql.dllのダウンロードであると思います。CSE開発元”つみきWEB”をよく見ると書いてある事なのですが、対応しているクライアントdllはwinclients-3 22 28のみです。このdllを入手するのに皆様お困りと思いますので、以下にdllのコピーを配置します。ご自由にダウンロード下さい。
ダウンロードしたdllファイルの置き場所は、CSE.exeと同一のディレクトリに配置して下さい。他の記事を見ると、C:\Windows\System32等の場所を選択する方もいますが、Windows配下に置くと全システムに影響を及ぼしてしまうため、お勧めできません。
CSE MySQL接続 – libmysql.dll – old password 対応 (MySQL 5.6以降のみ)
CSE MySQL接続 – libmysql.dll – old password とは
libmysql.dllによる接続は非常に面倒です。libmysql.dllのダウンロードに成功したとしても、次は以下のようなold passwordのエラーメッセージ悩まされるでしょう。
アプリケーション実行中に以下のエラーが発生しました。 エラー内容 : データベース処理用ダイナミックリンクライブラリをロード時にエラーが発生しました。 DBエラー詳細 : ERROR 1251 : Client does not support authentication protocol requested by server; consider upgrading MySQL client
さかのぼる事MySQL 4.1の仕様変更になりますが、パスワードのハッシュ値が16バイトから41バイトに強化されました。16バイトのパスワードをOLD PASSWORDと呼び、41バイトのパスワードをNEW PASSWORDと呼びます。
MySQL 5.6以降は、デフォルト設定でOLD PASSWORDを拒否します。一方、CSEはOLD PASSWORDのみをサポートします。ですので、MySQLサーバ側でOLD PASSWORDを許可するように設定変更する必要があります。
CSE MySQL接続 – libmysql.dll – old password 許可 ( サーバ側 )
設定ファイルmy.cnf ( Windows版の場合はmy.ini ) のmysqldセクションに”old_passwords=1”を加筆し、OLD PASSWORDを許可するようにします。 ( my.iniは多くの場合は、C:\ProgramData\MySQL\MySQL Server 5.6\my.iniに配置されています。もし、my.iniが見つからない場合は、MySQL インストール手順 Windowsの場合を参照下さい。)
--- my.cnf.bak 2014-07-25 22:13:07.693787624 +0900 +++ my.cnf 2014-07-25 22:13:14.146785619 +0900 @@ -13,6 +13,7 @@ long_query_time=0.1 slow_query_log_file=/var/log/mysqld-slow.log log-queries-not-using-indexes +old_passwords=1
設定反映のために再起動を行います (Windows版の場合は、サービスコンソールから再起動を行います)。
# /etc/init.d/mysql restart
再起動が行えない環境の場合は、mysqlのコンソール上で”set old_passwords=1 ;”と入力します。この操作により、再起動なしで設定を変更する事ができます。ただし、mysql起動時にmy.cnf (my.ini)が読み込まれてしまうので、設定ファイルの変更も忘れずに行ってください。
mysql> set old_passwords=1 ; Query OK, 0 rows affected (0.00 sec) mysql> show variables like "old_passwords" ; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | old_passwords | 1 | +---------------+-------+ 1 row in set (0.00 sec) mysql>
CSE MySQL接続 – libmysql.dll – old password 設定
old passwordを許可しても、old passwordが設定されているわけではありません。mysqlデータベースのuserテーブルを確認すると、41バイトのNEW PASSWORDが設定されている事が分かります。
mysql> select user, password, host from mysql.user ; +------+-------------------------------------------+-----------+ | user | password | host | +------+-------------------------------------------+-----------+ | root | *927B6655E46CDA222B802C7FE8407F8C2F0E7BDE | localhost | | root | *927B6655E46CDA222B802C7FE8407F8C2F0E7BDE | 127.0.0.1 | | root | *927B6655E46CDA222B802C7FE8407F8C2F0E7BDE | ::1 | +------+-------------------------------------------+-----------+ 3 rows in set (0.00 sec) mysql>
password函数を用いて、14バイトのパスワードのハッシュ値をpassword列に挿入します。なお、パスワードとユーザ名は適宜変更して下さい。また、flush privilegesによる設定反映も、念のため行った方が無難です。
mysql> update mysql.user set password = password('password') where user = 'root' ; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> flush privileges ; Query OK, 0 rows affected (0.00 sec) mysql>
mysqlデータベースのuserテーブルより、14バイトのパスワードが設定された事を確認します。
mysql> select user, password, host from mysql.user ; +------+------------------+-----------+ | user | password | host | +------+------------------+-----------+ | root | 5d2e19393cc5ef67 | localhost | | root | 5d2e19393cc5ef67 | 127.0.0.1 | | root | 5d2e19393cc5ef67 | ::1 | +------+------------------+-----------+ 3 rows in set (0.00 sec) mysql>
CSE MySQL接続 – libmysql.dll – secure_auth
OLD PASSWORDの許可設定はクライアント側にも必要です。CSEが出力するエラーメッセージでは分かりづらいのですが、mysql clinetを使用した接続を試みると以下のようにsecure_authと明確なエラーメッセージが出力されます。
C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql -uroot -p Enter password: ****** ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled) C:\Program Files\MySQL\MySQL Server 5.6\bin>
このエラーに対応するには、–skip-secure-authオプションの付与が必要となります。以下のようなmy.iniファイルを作成し、CSEと同一のディレクトリに配置させます。
[client] skip-secure-auth
CSE MySQL接続 – libmysql.dll 接続
CSEにて、libmysql.dllを用いたデータベース接続方法について説明します。
CSE.exeをダブルクリックで実行します。”データベース”, “接続”の順で押下し、接続メニューを表示させます。DBMSは”MySQL”を選択し、ユーザ名, パスワードを入力します。
”MySQL version X.X.XXに接続されました”とのメッセージから、MySQLに接続された事を確認します。