Poturi

目次

はじめに

MySQLをMac OS Xに入れた後に設定したことをまとめておきます。基本的にUnix系OSは同じです。

Mac OS X版のMySQLは公式サイトにてディスクイメージで配布されているので、インストールが簡単でした。独自にビルドしたければ、公式ページのtarファイルを使うのがよいと思います。finkにも置いてありますが、バージョンが古いようなので。

マニュアル

UTF-8の設定

日本語を扱うデータベースを新規に作るときは、UTF-8で統一してしまうのが今後のことを考えると最善だと思います。主要なプログラムはUTF-8にシフトしていくと思うので。

> cd /usr/local/mysql
> sudo cp support-files/my-small.cnf /etc/my.cnf
> sudo vim /etc/my.conf

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

データベースの新規作成

デフォルトで入っているデータベースをそのまま使ってもよいのですが、最初はトライ&エラーで破壊してしまうことが多いと思うので、作り直す方法を記しておきます。

> cd /usr/local/mysql
> sudo mv data data.old
> sudo scripts/mysql_install_db --user=mysql
> sudo chown -R mysql:mysql data

ここではmvでバックアップしていますが、必要がなければrm -rfします。

パスの追加

シェルで使う人はパスを追加しておきましょう。cshの場合はこんな感じ。

> vim ~/.cshrc
set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin
            /usr/local/bin /usr/local/mysql/bin)
> source ~/.cshrc

mysqldの起動

Mac OS X版のMySQLには、自動起動スクリプトみたいなのが付属しているので、起動時に必ず起動させたければ、それを使うのがよいでしょう。手動で起動するにはちょっとコツが必要です。

> sudo mysqld_safe --user=mysql
Password:
Starting mysqld daemon with databases from /usr/local/mysql/data
^Z
Suspended
> bg

&を付けて起動するとsudoのパスワードが入力できなくなるので、サスペンドしてからバックグラウンドジョブにするのがよいと思います。

rootのパスワードの設定

デフォルトではパスワードが設定されていないので、MySQLサーバの初回起動時に必ず設定しましょう。

> mysqladmin -u root password "password"

不要なユーザの削除

デフォルトのMySQLデータベースには、無名ユーザが登録されているので消します。ユーザには必ずユーザ名とパスワードを設定して、外部から接続する必要がなければアクセスをローカルホストに限定します。

> mysql -u root -p
Enter Password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.37 MySQL Community Server (GPL)

Type 'help;' or '\h' for help.
Type '\c' to clear the buffer.

mysql> SELECT user,host FROM mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
|      | localhost |
| root | localhost |
|      | pb.local  |
| root | pb.local  |
+------+-----------+
4 rows in set (0.43 sec)

mysql> DROP USER ''@localhost;
mysql> DROP USER ''@pb.local;
mysql> DROP USER 'root'@pb.local;
mysql> SELECT user,host FROM mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)

ユーザの管理

新規ユーザを作成しパスワードと権限を設定するには、GRANTコマンドを使います。fooユーザにmy_dbデータベースのmy_tableテーブルへの全権限を与える場合、次のように入力します。

mysql> GRANT ALL ON my_db.my_table TO foo@localhost
    -> IDENTIFIED BY "password";

データベースの基本操作

データベースの作成から削除まで、一連のクエリをまとめます。

データベースを作成する
mysql> CREATE DATABASE my_db;

データベースを選択する
mysql> USE my_db;

許可属性を設定する
mysql> GRANT ALL ON my_db.my_table TO foo@localhost
    -> IDENTIFIED BY "password";

テーブルを作成する
mysql> CREATE TABLE my_table (
    -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> name VARCHAR(32) NOT NULL, 
    -> date TIMESTAMP(14), message TEXT NOT NULL);

フィールドを表示する
mysql> SHOW COLUMNS FROM my_table;

レコードを追加する
mysql> INSERT INTO my_table SET name="foo",
    -> message="bar";

レコードを更新する
mysql> UPDATE my_table SET name="foo",
    -> message="bar" WHERE id=n;

レコードを削除する
mysql> DELETE FROM my_table WHERE id=n;

レコードを表示する
mysql> SELECT * FROM my_table ORDER BY id;

レコードを逆順にソートして表示する
mysql> SELECT * FROM my_table ORDER BY id DESC;

フィールドを追加する
mysql> ALTER TABLE my_table ADD my_field INT;

フィールド名を変更する
mysql> ALTER TABLE my_table CHANGE old_name new_name INT;

フィールド定義を変更する
mysql> ALTER TABLE my_table CHANGE my_field my_field INT;

フィールドを削除する
mysql> ALTER TABLE my_table DROP my_field;

IDをふりなおす
mysql> ALTER TABLE my_table DROP id;
mysql> ALTER TABLE my_table ADD
    -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;

テーブル名を変更する
mysql> ALTER TABLE old_name RENAME AS new_name;

テーブルを削除する
mysql> DROP TABLE my_table;

データベースを削除する
mysql> DROP DATABASE my_db;