Javaでデータベースプログラミング(MySQL環境構築)
Javaで開発をするようになってもう1年半ぐらい経過しているのですが、データベースプログラミングをする機会がありませんでした。ちょうど夏季休暇のこの時期を利用して、色々と触ってみることにしました。
MySQLのインストール
まずは、MySQL Community Serverを以下のダウンロードページからダウンロードします。Intel Mac用にパッケージ(dmgファイル)が用意されているので、そのまま利用しました。
MySQL 6は、というよりMySQL自体をあまり触る機会がなかったので、情報が充実していそうなMySQL 5.1をダウンロードしてきました。
あとは、Connector/Jも必要になるので、これもあわせて以下のダウンロードページからダウンロードします。
ダウンロードしたConnector/Jをクラスパスに通すだけでもいいのですが、せっかくMaven2を使っているので、自分のローカルリポジトリへインストールしておきます。
lucifer-2:~ kouichi$ mvn install:install-file -Dfile=/Users/kouichi/Downloads/mysql-connector-java-5.1.6/mysql-connector-java-5.1.6-bin.jar -DgroupId=com.mysql.jdbc -DartifactId=mysql-connector-java -Dversion=5.1.6 -Dpackaging=jar -DgeneratePom=true [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'install'. [INFO] artifact org.apache.maven.plugins:maven-install-plugin: checking for updates from central Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.2/maven-install-plugin-2.2.pom 2K downloaded Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.2/maven-install-plugin-2.2.jar 15K downloaded [INFO] ---------------------------------------------------------------------------- [INFO] Building Maven Default Project [INFO] task-segment: [install:install-file] (aggregator-style) [INFO] ---------------------------------------------------------------------------- Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.pom 1K downloaded Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.7/plexus-components-1.1.7.pom 4K downloaded Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-digest/1.0/plexus-digest-1.0.jar 11K downloaded [INFO] [install:install-file] [INFO] Installing /Users/kouichi/Downloads/mysql-connector-java-5.1.6/mysql-connector-java-5.1.6-bin.jar to /Users/kouichi/.m2/repository/com/mysql/jdbc/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7 seconds [INFO] Finished at: Wed Oct 08 17:59:31 JST 2008 [INFO] Final Memory: 3M/5M [INFO] ------------------------------------------------------------------------
pom.xmlにさきほどローカルリポジトリへインストールしたライブラリをdependencyに追加しておきます。
<?xml version="1.0" encoding="UTF-8"?><project> <modelVersion>4.0.0</modelVersion> <groupId>JavaDataAccessPractice</groupId> <artifactId>JavaDataAccessPractice</artifactId> <version>0.0.1-SNAPSHOT</version> <description></description> <dependencies> <dependency> <groupId>com.mysql.jdbc</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> </dependencies> </project>
権限付与
rootアカウントにて接続し、普段利用するkouichiというアカウントに全権限を付与します。
lucifer-2:~ kouichi$ mysql -u root mysql> grant all on *.* to 'kouichi'@'localhost'; Query OK, 0 rows affected (0.00 sec)
パスワード設定
kouichiアカウントのパスワードを設定しておきます。
lucifer-2:~ kouichi$ mysqladmin -u kouichi -h localhost password "kouichi"
データベース作成
kouichiアカウントでデータベースjava_progを作成します。
lucifer-2:~ kouichi$ mysql -u kouichi -p mysql> CREATE DATABASE java_prog; Query OK, 1 row affected (0.00 sec)
文字化け対策
日本語を含むデータをINSERTすると文字化けを起こしてしまったので、CHARACTER SETを確認します。見てみると、latin1となっていました。これは文字化けしてしまいます。ということで、すべてUTF-8に統一することにしました。
mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+--------------------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.1.28-rc-osx10.5-x86/share/charsets/ | +--------------------------+--------------------------------------------------------+ 8 rows in set (0.00 sec)
UTF-8に統一するために、/etc/my.cnfを新規に作成しました。(ここら辺は、あまり自信がないですが...)
[mysql] default_character_set=binary [mysqld] default_character_set=utf8 skip-character-set-client-handshake
どうやらUTF-8で統一するためには、データベースを作成するタイミングで、DEFAULT CHARACTER SETを指定するべきだったようなので、再作成します。
lucifer-2:~ kouichi$ mysql -u kouichi -p mysql> CREATE DATABASE java_prog DEFAULT CHARACTER SET utf8; Query OK, 1 row affected (0.00 sec)
もう一度CHARACTER SETを確認してみると、ばっちりUTF-8になっており、日本語データをINSERTしても文字化けはしなくなりました。
mysql> show variable like 'char%'; mysql> SHOW VARIABLES LIKE 'char%';+--------------------------+--------------------------------------------------------+| Variable_name | Value | +--------------------------+--------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.1.28-rc-osx10.5-x86/share/charsets/ | +--------------------------+--------------------------------------------------------+ 8 rows in set (0.01 sec)
ということで
やっと色々と触り始めることにしました。参考にしているのは、以下の書籍です。