MySQLは、マルチユーザ、マルチスレッドで動作するSQL問合言語をそなえたRDBMSです。高速、簡単なのをコンセプトにしています。また、DBMSでの管理作業等はほとんど意識することがありません。Windowsユーザでは、MicrosoftOfficeパーソナルを利用されている方等がExcelで管理するのは面倒な、ちょっとしたデータを管理したい場合等に向いていると考えます。
MySQLはversion 3.23.19以降はGNU General Public License (GPL)とのデュアルライセンスになりました。GPL下で配布が難しい場合でも日本では、ソフトエイジェンシー殿よりMySQLライセンスを購入することによりバイナリ配布等が認められます。ライセンスについてはソフトエイジェンシー殿のページに詳しく記述されています。
ソフトエイジェンシー殿のページに日本語WINDOWSで動作するクライアント、ODBCについて記述されているので必要なツールはインストールしておいてください。ここでは記述していません。また、Windows用の3.23.19から3.23.21のバイナリはマルチバイトに対応していないそうです。
c:\mysql\winmysqladmin.exeを起動すると、my.ini setupにて編集が行えます。変更後は、Save Modificationを必ず行ってください。
[mysqld]に
を追加しています。
(Sift_JISなerrmsg.sysを作成するとエラー表示も見えるようになりますが、標準状態ではcommand.comで使用する場合は、languageは設定しない方がよいかもしれません。)
MY.CNFは絶対に必要なファイルではありませんが、下記な場合には必ず必要です。
変更した場合は、my.cnfの[mysqld]セクションでbasedirを設定する必要があります。
my.cnfで注意する点は、
くらいかと思います。
# Example mysql config file. # Copy this file to c:\my.cnf to set global options # # One can use all long options that the program supports. # Run the program with --help to get a list of available options # This will be passed to all mysql clients [client] #password=my_password port=3306 #socket=MySQL # Here is entries for some specific programs # The following values assume you have at least 32M ram # The MySQL server [mysqld] port=3306 #socket=MySQL skip-locking default-character-set=latin1 set-variable = key_buffer=16M set-variable = max_allowed_packet=1M set-variable = thread_stack=128K set-variable = flush_time=1800 # Uncomment the following row if you move the MySQL distribution to another # location #basedir = d:/mysql/ [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash [isamchk] set-variable= key=16M [client_fltk] help_file= c:\mysql\sql_client\MySQL.help client_file= c:\mysql\MySQL.options history_length=20 database = test queries_root= c:\mysql\queries last_database_file= c:\mysql\lastdb
Windowsでは、c:\mysql\winmysqladmin.exeを使用するのが簡単です。NTではサービスに登録することもできます。
mysqladmin.exe startでも開始することができます。サービスに登録した場合は、net start mysqlになります。
Windowsでは、c:\mysql\winmysqladmin.exeを使用するのが簡単です。NTではサービスに登録することもできます。
mysqladmin.exe shutdownでも停止することができます。サービスに登録した場合は、net stop mysqlになります。
Windowsでは、c:\mysql\winmysqladmin.exeを使用するのが簡単です。接続情報、環境変数等みることができます。
mysqladmin.exe version status proc等でコマンドラインより見ることもできます。
mysql.exeでMySQLへの操作(DB、テーブルの作成、更新、参照、削除等)が行えるコマンドです。
mysql> select version(); +--------------+ | version() | +--------------+ | 3.23.22-beta | +--------------+ 1 row in set (0.05 sec) mysql> show databases; +----------+ | Database | +----------+ | mysql | | test | +----------+ 3 rows in set (0.00 sec) mysql>CREATE DATABASE hoge_db; Query OK, 1 rows affected(0.06 sec) mysql> show databases; +----------+ | Database | +----------+ | hoge_db | | mysql | | test | +----------+ 3 rows in set (0.00 sec) mysql>GRANT ALL ON hoge_db.* TO hogeuser IDENTIFIED BY "hogesecret"; Query OK, 0 rows affected(0.06 sec) mysql>USE hoge_db; Database changed mysql>DROP TABLE IF EXISTS hoge; Query OK, 0 rows affected(0.06 sec) mysql>CREATE TABLE hoge ->( -> id int(10) unsigned DEFAULT '0' NOT NULL, -> name char(50), -> PRIMARY KEY (id) ->); Query OK, 0 rows affected(0.06 sec) mysql> desc hoge; +-------+------------------+------+-----+---------+-------+---------------------------------+ | Field | Type | Null | Key | Default | Extra | Privileges | +-------+------------------+------+-----+---------+-------+---------------------------------+ | id | int(10) unsigned | | PRI | 0 | | select,insert,update,references | | name | char(50) | YES | | NULL | | select,insert,update,references | +-------+------------------+------+-----+---------+-------+---------------------------------+ 2 rows in set (0.00 sec) mysql>DELETE FROM hoge; Query OK, 0 rows affected(0.00 sec) mysql> insert into hoge values(1,'テスト'); Query OK, 1 row affected (0.00 sec) mysql> insert into hoge values(2,'表'); Query OK, 1 row affected (0.00 sec) mysql> select * from hoge; +----+----------+ | id | name | +----+----------+ | 1 | テスト | | 2 | 表示 | +----+----------+ 3 rows in set (0.05 sec) mysql> LOAD DATA LOCAL INFILE "hoge.txt" INTO TABLE hoge; Query OK, 4 rows affected (0.00 sec) レコード数: 4 削除: 0 Skipped: 0 Warnings: 0 mysql> select * from hoge; +----+----------+ | id | name | +----+----------+ | 1 | テスト | | 2 | 表示 | | 10 | 北海道 | | 12 | 青森 | | 13 | 岩手 | | 14 | 長野 | +----+----------+ 7 rows in set (0.00 sec) mysql>quit bye
10 北海道 12 青森 13 岩手 14 長野
mysql.exe -e
C:\tmp>mysql -e "select host,db,user from db" mysql +------+---------+-----------+ | host | db | user | +------+---------+-----------+ | % | hoge_db | hogeuser | | % | test% | | +------+---------+-----------+
DBを作成するため、下記内容を記述したcreatedb.sqlを作成する。
CREATE DATABASE hoge_db;
mysql.exeに記述したSQLを流し込むのは下記方法になります。
c:\>c:\mysql\bin\mysql.exe < c:\mysql\sql\createdb.sql
これ以降、mysql.exe hoge_dbと指定すると処理対象がhoge_dbにできます。
C:\tmp>mysql.exe hoge_db < createtb.sql
バッチコマンドで作成しておくと環境を構築が楽になります。mysqldump.exeの結果を流しこむ場合もこの方法になります。
mysqldump.exeを使用してバックアップを行います。
C:\tmp>>mysqldump hoge_db > hoge_db.bak
C:\tmp>>mysql hoge_db < hoge_db.bak
--tabオプションをつけるとSQL文と、データを分離してファイルができます。その場合は、SQL文の方はmysql.exe、データは、mysqlimport.exeを使用します。
--optオプションでよく使用するオプションが有効になります。(スタンドアロンで使用している場合は付けても付けなくてもいいかも)
c:\mysql\bin\mysqladmin.exeのオプションを指定することによりMySQLでの管理情報をみることができます。下記内容をみることができます。
Where command is a one or more of: (Commands may be shortened) create databasename Create a new database drop databasename Delete a database and all its tables extended-status Gives an extended status message from the server flush-hosts Flush all cached hosts flush-logs Flush all logs flush-status Clear status variables flush-tables Flush all tables flush-threads Flush the thread cache flush-privileges Reload grant tables (same as reload) kill id,id,... Kill mysql threads password new-password Change old password to new-password ping Check if mysqld is alive processlist Show list of active threads in server reload Reload grant tables refresh Flush all tables and close and open logfiles shutdown Take server down status Gives a short status message from the server variables Prints variables available version Get version info from server
MySQLのContribからaccess_to_mysql.txtを使用することにより、MS-Accessで作成したテーブル情報を元にcreate tableを作成してくれます。access2000の場合は、エラーのでる型をobject型に変更すれば動作しました。出力されたSQLを手直しすれば使用できると思います。
MySQL用のJDBCドライバをMM MySQL JDBC DRIVERSより入手する。
MySQL用のをDBIをActiveStateのPPMを使用して入手する。Proxy設定が必要な場合は、環境変数HTTP_PROXYに設定する。
C:\>set HTTP_PROXY=http://proxy_server_name:80/ C:\>ppm PPM interactive shell (2.0) - type 'help' for available commands. PPM> install DBI Install package 'DBI?' (y/N): y Retrieving package 'DBI'... Writing C:\Perl\site\lib\auto\DBI\.packlist PPM> install DBD-MySQL Install package 'DBD-MySQL?' (y/N): y Retrieving package 'DBD-MySQL'... Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.bs Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.dll Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.exp Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.lib Installing C:\Perl\site\lib\Mysql.pm Installing C:\Perl\site\lib\Mysql\Statement.pm Installing C:\Perl\site\lib\DBD\mysql.pm Installing C:\Perl\site\lib\Bundle\DBD\mysql.pm Installing C:\Perl\bin\dbimon Installing C:\Perl\bin\dbimon.bat Writing C:\Perl\site\lib\auto\DBD\Mysql\.packlist PPM> quit Quit! C:\>
動作確認は、ftp://ftp.SoftAgency.co.jp/mysql/japan/perl/db.plを使用してみる。
MySQL用のRubyインタフェースをMySQL - Ruby インタフェースより入手する。
www.apache.orgよりwindows32用のバイナリをテンポラリにダウンロードします。デフォルトの設定(C:\Program Files\Apache Group\Apache\へインストール)でインストールしました。
C:\temp\>apache_1_3_12_win32.exe C:\temp\>
www.php.netよりwindows32用のバイナリをテンポラリにダウンロードします。zip形式で固められているので適当なツールでテンポラリ領域に解凍します(今回はc:\temp\php3に解凍しました。)。まずphp3.ini-distをWINDOWSのディレクトリにphp3.iniという名前でコピーします。その後で解凍した内容をApache for Win32をインストールしたディレクトリにphp3というディレクトリを作成してテンポラリーより移動させます。php3ディレクトリにある。
C:\temp\php-3.0.16-win32>copy php3.ini-dist c:\windows\php3.ini C:\temp\php-3.0.16-win32>mkdir "C:\Program Files\Apache Group\Apache\php3" C:\temp\php-3.0.16-win32>move *.* "C:\Program Files\Apache Group\Apache\php3"
コピー先のphp3.iniの下記内容を変更しました。
doc_root = "C:/Program Files/Apache Group/Apache/htdocs/" extension_dir = "C:/Program Files/Apache Group/Apache/php3/" ;Windows Extensions extension=php3_mysql.dll
apacheのコンフィギュレーションファイルhttp.confへ下記を追加もしくは、コメントを外す。この設定時、phtml拡張子時、php3として処理を行われる。
ScriptAlias /php3/ "C:/Program Files/Apache Group/Apache/php3/" AddType application/x-httpd-php3 .phtml AddType application/x-httpd-php3-source .phps Action application/x-httpd-php3 "/php3/php.exe"
本当に使う場合は、mail関係も設定する方がよい。
PHP3の動作と設定確認のため下記index.phtmlを作成してapacheのドキュメントディレクトリにおいておく。
<? phpinfo(); ?>
<? mysql_connect("localhost:3306"); mysql_select_db("hoge_db"); $tablename = "hoge"; $result = mysql_query("select * from $tablename"); $fields = mysql_num_fields($result); $rows = mysql_num_rows($result); $table = mysql_field_table($result,0); echo "<html>"; echo "<head>"; echo "<title>" . $table . " Results</title>"; echo '<link rel="stylesheet" type="text/css" href="table-data.css">'; echo "</head>"; echo "Results:" . $rows . "<br>"; echo '<table class="data"><thead><tr>'; $i = 0; while( $i < $fields ) { $name = mysql_field_name($result,$i); echo "<th>" . $name . "</th>"; $i++; } echo "</tr></thead><tbody>"; while(($data=mysql_fetch_row($result))){ echo "<tr>"; $i = 0; while( $i < $fields ) { echo "<td>" . $data[$i] . "</td>"; $i++; } echo "</tr>"; } echo "</tbody></table>"; mysql_close(); ?>
table.data { margin-top: 10pt; margin-bottom: 10pt; background-color: green; } table.data caption { background-color: khaki; font-weight: bold; } table.data th { color: yellow; background-color: lightseagreen; } table.data td { background-color: antiquewhite; } table.data td.key { background-color: salmon; font-weight: bold; }
実践MySQLのサンプルを動作させてみる。
国際化関数部分をコメントにして、JISにしている部分をSift_JISにする。
内容が濃すぎて読みきれませんが、必要そうな事は一通り書いてありそう。まずこれを読むことから始めないといけないでしょう。(ありがたい事に日本語訳あり)
O'REILLYものらしくリファレンスにはいいけど、多分これから読み始めると意味不明になります。MySQLのコマンドオプション、C言語、Perl、PHP等の関数一覧等便利。
PHP徹底攻略で扱っている主なDBはPostgresqlですが、MySQLのことも記述されています。このメモでも書いてるサンプルはPHP徹底攻略そのままです。DBについても記述されてます。
壁になりそうな部分について書かれていて非常に便利です。