MySQLユーザーとinformation_schemaデータベースについて

information_schemaデータベースについてリファレンスマニュアルの抜粋。

INFORMATION_SCHEMA provides access to database metadata, information about the MySQL server such as the name of a database or table, the data type of a column, or access privileges. Other terms that are sometimes used for this information are data dictionary and system catalog.

INFORMATION_SCHEMAは、データベース・テーブルの名前、カラムのデータ型やアクセス権限といったMySQLサーバーの情報を持ったデータベースのメタデータへのアクセスを提供します。この情報は時々「データディクショナリ」や「システムカタログ」といった別の用語が使用されます。

引用元: MySQL 5.6 Reference Manual :: 21 INFORMATION_SCHEMA Tables

ユーザーの権限によってinformation_shemaの見え方がどのようになるのか気になったので、試してみました。

環境:MySQL 5.6.16

この記事を読む ≫

ビットフラグをDBのテーブル設計に用いてみる

DBのテーブル設計を行うときにフラグを持つフィールドは、それぞれtinyint(1)とかでフィールドを作って0 or 1を入れるようにしていました。

CREATE TABLE `sample_old` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `flg1` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ1',
    `flg2` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ2',
    `flg3` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ3',
    `flg4` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'フラグ4',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

これだとテーブルに持つフラグが増えた分だけフィールドの数も増えますし、検索SQLのWHERE条件も増えてしまうのどうしようって思っていたら、ビットフラグ使えばいいよねって話になったので試してみます。

動作確認環境:MySQL5.6

この記事を読む ≫

my.cnfの場所にハメられた。。。

MySQLが読み込むmy.cnfは

mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf 

でわかります。が、これ、読み込まれる優先順位が

  1. ~/.my.cnf
  2. /etc/my.cnf
  3. /etc/mysql/my.cnf

※ MySQL5.1.73

であることに注意しましょう。まあ、/etc/my.cnf以外そんな使わないと思いますが。
もうひとつ注意があります。

この記事を読む ≫

MySQL5.6.17 → 5.6.19にアップデートしたのでその手順のメモ

MySQLをアップデートしたのでその手順のメモです。GTIDを使用したレプリケーション環境だったので、マスターアップデート中にスレーブをマスターに昇格させることで、ダウンタイム無しでアップデートを行うことが出来ました。

この記事を読む ≫