SlideShare a Scribd company logo
初心者向け
                                        MySQLの始め方
                                          MySQL Beginners Talk

                                            とみたまさひろ
                                                    2012-05-29



初心者向けMySQLの始め方 - MySQL Beginners Talk                 Powered by Rabbit 1.0.6
自己紹介

      ✓ とみたまさひろ
      ✓ MySQLユーザ会(代表)
      ✓ id:tmtms
      ✓ @tmtms
      ✓ RubyからMySQLを使うライブラリ書いたり


                                                             1/80
初心者向けMySQLの始め方 - MySQL Beginners Talk          Powered by Rabbit 1.0.6
MySQL徹底入門(の一部)




                                                      2/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
MySQL辞典(の一部)




                                                        3/80
初心者向けMySQLの始め方 - MySQL Beginners Talk     Powered by Rabbit 1.0.6
Postfix辞典




                                                            4/80
初心者向けMySQLの始め方 - MySQL Beginners Talk         Powered by Rabbit 1.0.6
MySQL
   Beginners
     Talk
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                      5/80
                                        Powered by Rabbit 1.0.6
みなさん
        初心者で
        すよね?
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                      6/80
                                        Powered by Rabbit 1.0.6
初心者
              の人
                               (挙手)
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                      7/80
                                        Powered by Rabbit 1.0.6
初心者におすすめ(ステマ)




                                                      8/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
MySQL
    とは
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                      9/80
                                        Powered by Rabbit 1.0.6
オープンソ
  ース(GPL)
  なRDBMS
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    10/80
                                        Powered by Rabbit 1.0.6
商用版もあり
       MySQL
      Enterprise
       Edition
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    11/80
                                        Powered by Rabbit 1.0.6
使って
        みよう
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    12/80
                                        Powered by Rabbit 1.0.6
たいていの
     Linux には
     含まれてる                                          13/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
でもち
       と古い
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    14/80
                                        Powered by Rabbit 1.0.6
今から始め
  るならバー
  ジョン5.5.x
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    15/80
                                        Powered by Rabbit 1.0.6
公式バイ
   ナリがおす
     すめ
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    16/80
                                        Powered by Rabbit 1.0.6
Linux
      Windows
    MacOS Solaris
      FreeBSD
                                                    17/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
ダウンロード
       http://dev.mysql.com/downloads/mysql/




                                                       18/80
初心者向けMySQLの始め方 - MySQL Beginners Talk      Powered by Rabbit 1.0.6
インストール


          #   cd /usr/local
          #   tar xf /tmp/mysql-5.5.24-linux2.6-i686.tar.gz
          #   mv mysql-5.5.24-linux2.6-i686 mysql
          #   cd mysql
          #   ./scripts/mysql_install_db
          #   useradd -r mysql
          #   chown -R mysql:mysql .



                                                                  19/80
初心者向けMySQLの始め方 - MySQL Beginners Talk                 Powered by Rabbit 1.0.6
起動す
    る前に
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    20/80
                                        Powered by Rabbit 1.0.6
設定
   ファイル
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    21/80
                                        Powered by Rabbit 1.0.6
my.cnf
      この順番に読まれてマージ(後勝ち)
      ✓ /etc/my.cnf
      ✓ /etc/mysql/my.cnf
      ✓ /usr/local/mysql/etc/my.cnf (公式バイナリ)
      ✓ $MYSQL_HOME/my.cnf
      ✓ --defaults-extra-file で指定したもの
      ✓ $HOME/.my.cnf
                                                             22/80
初心者向けMySQLの始め方 - MySQL Beginners Talk            Powered by Rabbit 1.0.6
思わぬもの
  を読んでる
   ことも!
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    23/80
                                        Powered by Rabbit 1.0.6
指定したものだけ読む


      ✓ --defaults-file
      ✓ コマンドライン引数の先頭に指定
      ✓ 途中に書いてもエラー




                                                    24/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
my.cnf
                  [mysqld]
                  user = mysql
                  character-set-server = utf8
                  log-error = /var/log/mysqld.err
                  skip-name-resolve
                  innodb-file-per-table
                  [mysql]
                  default-character-set = utf8
                  show-warnings

    一旦起動すると、後で変更するのが面倒なパラメー
    タもあるので注意               25/80
初心者向けMySQLの始め方 - MySQL Beginners Talk            Powered by Rabbit 1.0.6
起動


            # /usr/local/mysql/bin/mysqld &
            # /usr/local/mysql/bin/mysqld_safe &
            # /usr/local/mysql/support-files/
              mysql.server start


                                                            26/80
初心者向けMySQLの始め方 - MySQL Beginners Talk           Powered by Rabbit 1.0.6
停止


               % /usr/local/mysql/bin/mysqladmin
                 -u root shutdown
               # /usr/local/mysql/support-files/
                 mysql.server stop
               # kill <PID of mysqld>


                                                          27/80
初心者向けMySQLの始め方 - MySQL Beginners Talk         Powered by Rabbit 1.0.6
kill -9
                       ダメ!
                       絶対!
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    28/80
                                        Powered by Rabbit 1.0.6
MySQLは
   ネットワー
   クサーバー
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    29/80
                                        Powered by Rabbit 1.0.6
サーバーとクライアント
      サーバー
      ✓ mysqld
      クライアント
      ✓ mysql
      ✓ mysqladmin
      ✓ mysqldump
      ✓ その他各種アプリ
                                                    30/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
待ち受けポート



      ✓ TCP/IP 3306
      ✓ UNIXソケット /tmp/mysql.sock




                                                    31/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
アクセスす
  るためには
  認証が必要                                             32/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
ユーザー
     管理                                             33/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
OSのユー
   ザーとは
  (ほぼ)無関係                                           34/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
username@client

                                                    35/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
初期状態で
    root@localhost
    root@127.0.0.1
       root@::1
     root@ホスト名                                      36/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
全部
   パスワード
    なし
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    37/80
                                        Powered by Rabbit 1.0.6
パスワード設定

         % mysql -u root
         [自分自身のパスワード]
         mysql> set password = password('hogehoge');
         [他のユーザーのパスワード]
         mysql> set password for root@'127.0.0.1' =
                password('fugafuga');
         mysql> Ctrl-D

                                                           38/80
初心者向けMySQLの始め方 - MySQL Beginners Talk          Powered by Rabbit 1.0.6
パスワード設定後

          % mysql -u root
          % ERROR 1045 (28000): Access denied for user
           'root'@'localhost' (using password: NO)

          % mysql -u root -p
          Enter password:
          mysql>

          % mysql -u root -phogehoge (-pの後に空白不要)
          mysql>

                                                              39/80
初心者向けMySQLの始め方 - MySQL Beginners Talk             Powered by Rabbit 1.0.6
匿名ユーザー
    ユーザー登録してなくてもアクセス可能

                           % mysql -u tommy
                           mysql> show databases;
                           +--------------------+
                           | Database           |
                           +--------------------+
                           | information_schema |
                           | test               |
                           +--------------------+

                                                                40/80
初心者向けMySQLの始め方 - MySQL Beginners Talk               Powered by Rabbit 1.0.6
ユーザー一覧
          % mysql -u root
          mysql> select user,host from mysql.user;
          +------+-----------+
          | user | host      |
          +------+-----------+
          | root | localhost |
          | root | x220      |
          | root | 127.0.0.1 |
          | root | ::1       |
          |      | localhost |
          |      | x220      |
          +------+-----------+
                                                          41/80
初心者向けMySQLの始め方 - MySQL Beginners Talk         Powered by Rabbit 1.0.6
不要なユーザーを削除


              % mysql -u root
              mysql> drop user          root@'127.0.0.1';
              mysql> drop user          root@'::1';
              mysql> drop user          root@ホスト名;
              mysql> drop user          ''@localhost;
              mysql> drop user          ''@ホスト名;


                                                                   42/80
初心者向けMySQLの始め方 - MySQL Beginners Talk                  Powered by Rabbit 1.0.6
ユーザー作成



              % mysql -u root -p
              mysql> create user hoge@localhost
                     identified by 'パスワード';




                                                         43/80
初心者向けMySQLの始め方 - MySQL Beginners Talk        Powered by Rabbit 1.0.6
権限付与




                  mysql> grant 権限 on DB名.TBL名
                         to user@client;




                                                           44/80
初心者向けMySQLの始め方 - MySQL Beginners Talk          Powered by Rabbit 1.0.6
権限

       Create / Drop / Grant option / Lock
       tables / References / Event / Alter /
       Delete / Index / Insert / Select / Update /
       Create temporary tables / Trigger / Create
       view / Show view / Alter routine / Create
       routine / Execute / File / Create
       tablespace / Create user / Process /
       Proxy / Reload / Replication client /
       Replication slave / Show databases /
       Shutdown / Super / All

                                                          45/80
初心者向けMySQLの始め方 - MySQL Beginners Talk         Powered by Rabbit 1.0.6
権限


      ✓ システム全体
      ✓ データベース
      ✓ テーブル
      ✓ カラム



                                                         46/80
初心者向けMySQLの始め方 - MySQL Beginners Talk        Powered by Rabbit 1.0.6
たいていはこれで事足りるかも


    特定のDBに対して全件付与

                       mysql> grant all on DB名.*
                              to user@client;




                                                               47/80
初心者向けMySQLの始め方 - MySQL Beginners Talk              Powered by Rabbit 1.0.6
権限剥奪




                 mysql> revoke 権限 on DB名.TBL名
                        from user@client;




                                                           48/80
初心者向けMySQLの始め方 - MySQL Beginners Talk          Powered by Rabbit 1.0.6
localhost と
    127.0.0.1
      は違う!
                                                    49/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
localhost と 127.0.0.1

      ✓ 初心者はだいたいハマる
      ✓ localhost は UNIXソケット
        /tmp/mysql.sock
      ✓ mysql -u root -h localhost
      ✓ 127.0.0.1 は TCP/IP
      ✓ mysql -u root -h 127.0.0.1

                                                      50/80
初心者向けMySQLの始め方 - MySQL Beginners Talk     Powered by Rabbit 1.0.6
データベース
      作成
    テーブル作成
    レコード操作
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    51/80
                                        Powered by Rabbit 1.0.6
割愛
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    52/80
                                        Powered by Rabbit 1.0.6
日本語
                                                    53/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
文字コ
      ード
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    54/80
                                        Powered by Rabbit 1.0.6
初心者は
  黙ってutf8
                                                    55/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
my.cnf

                  [mysqld]
                  user = mysql
                  character-set-server = utf8
                  log-error = /var/log/mysqld.err
                  skip-name-resolve
                  innodb-file-per-table
                  [mysql]
                  default-character-set = utf8
                  show-warnings
                                                             56/80
初心者向けMySQLの始め方 - MySQL Beginners Talk            Powered by Rabbit 1.0.6
charset
           と
       collation
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    57/80
                                        Powered by Rabbit 1.0.6
charset


      ✓ コードと文字との対応 (「あ」= E3 81 82)
      ✓ utf8mb4 : 4バイトUTF-8 (MySQL 5.5から)
      ✓ utf8 : 3バイトUTF-8
      ✓ eucjpms, cp932, ...



                                                              58/80
初心者向けMySQLの始め方 - MySQL Beginners Talk             Powered by Rabbit 1.0.6
charset
             mysql> show charset;
             +----------+-----------------------------+---------------------+--------+
             | Charset | Description                  | Default collation   | Maxlen |
             +----------+-----------------------------+---------------------+--------+
             | big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
             | dec8     | DEC West European           | dec8_swedish_ci     |      1 |
             | cp850    | DOS West European           | cp850_general_ci    |      1 |
             | hp8      | HP West European            | hp8_english_ci      |      1 |
             | koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
             | latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
             | latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
             | swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |
             | ascii    | US ASCII                    | ascii_general_ci    |      1 |
             | ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |
             | sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |
             | hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 |
             | tis620   | TIS620 Thai                 | tis620_thai_ci      |      1 |
             〜
             | latin5   | ISO 8859-9 Turkish          | latin5_turkish_ci   |      1 |
             | armscii8 | ARMSCII-8 Armenian          | armscii8_general_ci |      1 |
             | utf8     | UTF-8 Unicode               | utf8_general_ci     |      3 |
             | ucs2     | UCS-2 Unicode               | ucs2_general_ci     |      2 |
             〜

                                                                                             59/80
初心者向けMySQLの始め方 - MySQL Beginners Talk                                            Powered by Rabbit 1.0.6
collation



      ✓ 文字の照合規則
      ✓ utf8_general_ci, utf8_bin,
        utf8_unicode_ci, ...




                                                                60/80
初心者向けMySQLの始め方 - MySQL Beginners Talk               Powered by Rabbit 1.0.6
collation
             mysql> show collation;
             +--------------------------+----------+-----+---------+----------+---------+
             | Collation                | Charset | Id | Default | Compiled | Sortlen |
             +--------------------------+----------+-----+---------+----------+---------+
             | big5_chinese_ci          | big5     |   1 | Yes     | Yes      |       1 |
             | big5_bin                 | big5     | 84 |          | Yes      |       1 |
             | dec8_swedish_ci          | dec8     |   3 | Yes     | Yes      |       1 |
             | dec8_bin                 | dec8     | 69 |          | Yes      |       1 |
             | cp850_general_ci         | cp850    |   4 | Yes     | Yes      |       1 |
             | cp850_bin                | cp850    | 80 |          | Yes      |       1 |
             | hp8_english_ci           | hp8      |   6 | Yes     | Yes      |       1 |
             | hp8_bin                  | hp8      | 72 |          | Yes      |       1 |
             | koi8r_general_ci         | koi8r    |   7 | Yes     | Yes      |       1 |
             | koi8r_bin                | koi8r    | 74 |          | Yes      |       1 |
             | latin1_german1_ci        | latin1   |   5 |         | Yes      |       1 |
             | latin1_swedish_ci        | latin1   |   8 | Yes     | Yes      |       1 |
             〜
             | utf8_general_ci          | utf8     | 33 | Yes      | Yes      |       1 |
             | utf8_bin                 | utf8     | 83 |          | Yes      |       1 |
             | utf8_unicode_ci          | utf8     | 192 |         | Yes      |       8 |
             | utf8_icelandic_ci        | utf8     | 193 |         | Yes      |       8 |
             | utf8_latvian_ci          | utf8     | 194 |         | Yes      |       8 |
             | utf8_romanian_ci         | utf8     | 195 |         | Yes      |       8 |
             〜

                                                                                                61/80
初心者向けMySQLの始め方 - MySQL Beginners Talk                                               Powered by Rabbit 1.0.6
utf8_general_ci


      ✓ charset utf8 のデフォルトの collation
      ✓ ASCII/ラテン文字の大文字小文字を区別しな
        い
      ✓ A=a



                                                         62/80
初心者向けMySQLの始め方 - MySQL Beginners Talk        Powered by Rabbit 1.0.6
utf8_bin


      ✓ char(n) binary として宣言した時の collation
      ✓ すべての文字を区別する
      ✓ A != a




                                                               63/80
初心者向けMySQLの始め方 - MySQL Beginners Talk              Powered by Rabbit 1.0.6
utf8_unicode_ci

      ✓ Unicode Collation Algorithm (UCA) によ
        る collation
      ✓ 大文字/小文字/全角/半角/カタカナ/ひらが
        な/濁音を区別しない
      ✓ a=A=A
      ✓ は=ば=ぱ=ハ=バ=パ=ハ
      ✓      http://tmtm.org/tmp/mysql_unicode_collation.html


                                                                            64/80
初心者向けMySQLの始め方 - MySQL Beginners Talk                           Powered by Rabbit 1.0.6
文字コードが関係するもの

      ✓ クライアント
      ✓ 接続
      ✓ データベース
      ✓ テーブル
      ✓ カラム


                                                    65/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
同じテーブルの
   カラム毎に異な
   る文字コードを
    指定可能                                            66/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
クライアント-
  サーバー間
  で自動変換                                             67/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
ハマりたく
    なかったら
    utf8に統一                                         68/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
ストレージ
  エンジン
                                                    69/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
データをディス
  ク(か何か)に保存
  &取り出すレ
      イヤ
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    70/80
                                        Powered by Rabbit 1.0.6
SQLのこと
  なんて(あんま
  り)知らない                                            71/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
InnoDB /
         MyISAM / CSV /
          BLACKHOLE /
           MEMORY /
         MRG_MYISAM /
            ARCHIVE                                 72/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
InnoDB /
         MyISAM / CSV /
          BLACKHOLE /
           MEMORY /
         MRG_MYISAM /
            ARCHIVE                                 73/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
InnoDB


      ✓ デフォルトのストレージエンジン
      ✓ トランザクション
      ✓ レコードロック




                                                             74/80
初心者向けMySQLの始め方 - MySQL Beginners Talk            Powered by Rabbit 1.0.6
MyISAM

      ✓ システムテーブル(mysql.*)で使用
      ✓ トランザクション未対応
      ✓ テーブルロック
      ✓ 全文検索(日本語不可)
      ✓ 位置情報


                                                             75/80
初心者向けMySQLの始め方 - MySQL Beginners Talk            Powered by Rabbit 1.0.6
初心者は
         黙って
        InnoDB
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    76/80
                                        Powered by Rabbit 1.0.6
おまけ
                                                    77/80
初心者向けMySQLの始め方 - MySQL Beginners Talk   Powered by Rabbit 1.0.6
mroonga

      ✓ コミュニティ版ストレージエンジン
      ✓ 高速日本語全文検索 groonga
      ✓ 位置情報も
      ✓ mroonga = groonga ストレージエンジン
      ✓ 毎月肉の日(29日)リリース


                                                              78/80
初心者向けMySQLの始め方 - MySQL Beginners Talk             Powered by Rabbit 1.0.6
以上
初心者向けMySQLの始め方 - MySQL Beginners Talk
                                                    79/80
                                        Powered by Rabbit 1.0.6
まとめ


      ✓ 設定ファイルに注意
      ✓ 初期状態のアクセス権は危険
      ✓ 文字コードはutf8
      ✓ ストレージエンジンはInnoDB



                                                          80/80
初心者向けMySQLの始め方 - MySQL Beginners Talk         Powered by Rabbit 1.0.6

More Related Content

初心者向けMySQLの始め方

  • 1. 初心者向け MySQLの始め方 MySQL Beginners Talk とみたまさひろ 2012-05-29 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 2. 自己紹介 ✓ とみたまさひろ ✓ MySQLユーザ会(代表) ✓ id:tmtms ✓ @tmtms ✓ RubyからMySQLを使うライブラリ書いたり 1/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 3. MySQL徹底入門(の一部) 2/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 4. MySQL辞典(の一部) 3/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 5. Postfix辞典 4/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 6. MySQL Beginners Talk 初心者向けMySQLの始め方 - MySQL Beginners Talk 5/80 Powered by Rabbit 1.0.6
  • 7. みなさん 初心者で すよね? 初心者向けMySQLの始め方 - MySQL Beginners Talk 6/80 Powered by Rabbit 1.0.6
  • 8. 初心者 の人 (挙手) 初心者向けMySQLの始め方 - MySQL Beginners Talk 7/80 Powered by Rabbit 1.0.6
  • 9. 初心者におすすめ(ステマ) 8/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 10. MySQL とは 初心者向けMySQLの始め方 - MySQL Beginners Talk 9/80 Powered by Rabbit 1.0.6
  • 11. オープンソ ース(GPL) なRDBMS 初心者向けMySQLの始め方 - MySQL Beginners Talk 10/80 Powered by Rabbit 1.0.6
  • 12. 商用版もあり MySQL Enterprise Edition 初心者向けMySQLの始め方 - MySQL Beginners Talk 11/80 Powered by Rabbit 1.0.6
  • 13. 使って みよう 初心者向けMySQLの始め方 - MySQL Beginners Talk 12/80 Powered by Rabbit 1.0.6
  • 14. たいていの Linux には 含まれてる 13/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 15. でもち と古い 初心者向けMySQLの始め方 - MySQL Beginners Talk 14/80 Powered by Rabbit 1.0.6
  • 16. 今から始め るならバー ジョン5.5.x 初心者向けMySQLの始め方 - MySQL Beginners Talk 15/80 Powered by Rabbit 1.0.6
  • 17. 公式バイ ナリがおす すめ 初心者向けMySQLの始め方 - MySQL Beginners Talk 16/80 Powered by Rabbit 1.0.6
  • 18. Linux Windows MacOS Solaris FreeBSD 17/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 19. ダウンロード http://dev.mysql.com/downloads/mysql/ 18/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 20. インストール # cd /usr/local # tar xf /tmp/mysql-5.5.24-linux2.6-i686.tar.gz # mv mysql-5.5.24-linux2.6-i686 mysql # cd mysql # ./scripts/mysql_install_db # useradd -r mysql # chown -R mysql:mysql . 19/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 21. 起動す る前に 初心者向けMySQLの始め方 - MySQL Beginners Talk 20/80 Powered by Rabbit 1.0.6
  • 22. 設定 ファイル 初心者向けMySQLの始め方 - MySQL Beginners Talk 21/80 Powered by Rabbit 1.0.6
  • 23. my.cnf この順番に読まれてマージ(後勝ち) ✓ /etc/my.cnf ✓ /etc/mysql/my.cnf ✓ /usr/local/mysql/etc/my.cnf (公式バイナリ) ✓ $MYSQL_HOME/my.cnf ✓ --defaults-extra-file で指定したもの ✓ $HOME/.my.cnf 22/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 24. 思わぬもの を読んでる ことも! 初心者向けMySQLの始め方 - MySQL Beginners Talk 23/80 Powered by Rabbit 1.0.6
  • 25. 指定したものだけ読む ✓ --defaults-file ✓ コマンドライン引数の先頭に指定 ✓ 途中に書いてもエラー 24/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 26. my.cnf [mysqld] user = mysql character-set-server = utf8 log-error = /var/log/mysqld.err skip-name-resolve innodb-file-per-table [mysql] default-character-set = utf8 show-warnings 一旦起動すると、後で変更するのが面倒なパラメー タもあるので注意 25/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 27. 起動 # /usr/local/mysql/bin/mysqld & # /usr/local/mysql/bin/mysqld_safe & # /usr/local/mysql/support-files/ mysql.server start 26/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 28. 停止 % /usr/local/mysql/bin/mysqladmin -u root shutdown # /usr/local/mysql/support-files/ mysql.server stop # kill <PID of mysqld> 27/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 29. kill -9 ダメ! 絶対! 初心者向けMySQLの始め方 - MySQL Beginners Talk 28/80 Powered by Rabbit 1.0.6
  • 30. MySQLは ネットワー クサーバー 初心者向けMySQLの始め方 - MySQL Beginners Talk 29/80 Powered by Rabbit 1.0.6
  • 31. サーバーとクライアント サーバー ✓ mysqld クライアント ✓ mysql ✓ mysqladmin ✓ mysqldump ✓ その他各種アプリ 30/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 32. 待ち受けポート ✓ TCP/IP 3306 ✓ UNIXソケット /tmp/mysql.sock 31/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 33. アクセスす るためには 認証が必要 32/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 34. ユーザー 管理 33/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 35. OSのユー ザーとは (ほぼ)無関係 34/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 36. username@client 35/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 37. 初期状態で root@localhost [email protected] root@::1 root@ホスト名 36/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 38. 全部 パスワード なし 初心者向けMySQLの始め方 - MySQL Beginners Talk 37/80 Powered by Rabbit 1.0.6
  • 39. パスワード設定 % mysql -u root [自分自身のパスワード] mysql> set password = password('hogehoge'); [他のユーザーのパスワード] mysql> set password for root@'127.0.0.1' = password('fugafuga'); mysql> Ctrl-D 38/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 40. パスワード設定後 % mysql -u root % ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) % mysql -u root -p Enter password: mysql> % mysql -u root -phogehoge (-pの後に空白不要) mysql> 39/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 41. 匿名ユーザー ユーザー登録してなくてもアクセス可能 % mysql -u tommy mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+ 40/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 42. ユーザー一覧 % mysql -u root mysql> select user,host from mysql.user; +------+-----------+ | user | host | +------+-----------+ | root | localhost | | root | x220 | | root | 127.0.0.1 | | root | ::1 | | | localhost | | | x220 | +------+-----------+ 41/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 43. 不要なユーザーを削除 % mysql -u root mysql> drop user root@'127.0.0.1'; mysql> drop user root@'::1'; mysql> drop user root@ホスト名; mysql> drop user ''@localhost; mysql> drop user ''@ホスト名; 42/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 44. ユーザー作成 % mysql -u root -p mysql> create user hoge@localhost identified by 'パスワード'; 43/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 45. 権限付与 mysql> grant 権限 on DB名.TBL名 to user@client; 44/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 46. 権限 Create / Drop / Grant option / Lock tables / References / Event / Alter / Delete / Index / Insert / Select / Update / Create temporary tables / Trigger / Create view / Show view / Alter routine / Create routine / Execute / File / Create tablespace / Create user / Process / Proxy / Reload / Replication client / Replication slave / Show databases / Shutdown / Super / All 45/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 47. 権限 ✓ システム全体 ✓ データベース ✓ テーブル ✓ カラム 46/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 48. たいていはこれで事足りるかも 特定のDBに対して全件付与 mysql> grant all on DB名.* to user@client; 47/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 49. 権限剥奪 mysql> revoke 権限 on DB名.TBL名 from user@client; 48/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 50. localhost と 127.0.0.1 は違う! 49/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 51. localhost と 127.0.0.1 ✓ 初心者はだいたいハマる ✓ localhost は UNIXソケット /tmp/mysql.sock ✓ mysql -u root -h localhost ✓ 127.0.0.1 は TCP/IP ✓ mysql -u root -h 127.0.0.1 50/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 52. データベース 作成 テーブル作成 レコード操作 初心者向けMySQLの始め方 - MySQL Beginners Talk 51/80 Powered by Rabbit 1.0.6
  • 53. 割愛 初心者向けMySQLの始め方 - MySQL Beginners Talk 52/80 Powered by Rabbit 1.0.6
  • 54. 日本語 53/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 55. 文字コ ード 初心者向けMySQLの始め方 - MySQL Beginners Talk 54/80 Powered by Rabbit 1.0.6
  • 56. 初心者は 黙ってutf8 55/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 57. my.cnf [mysqld] user = mysql character-set-server = utf8 log-error = /var/log/mysqld.err skip-name-resolve innodb-file-per-table [mysql] default-character-set = utf8 show-warnings 56/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 58. charset と collation 初心者向けMySQLの始め方 - MySQL Beginners Talk 57/80 Powered by Rabbit 1.0.6
  • 59. charset ✓ コードと文字との対応 (「あ」= E3 81 82) ✓ utf8mb4 : 4バイトUTF-8 (MySQL 5.5から) ✓ utf8 : 3バイトUTF-8 ✓ eucjpms, cp932, ... 58/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 60. charset mysql> show charset; +----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | 〜 | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | 〜 59/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 61. collation ✓ 文字の照合規則 ✓ utf8_general_ci, utf8_bin, utf8_unicode_ci, ... 60/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 62. collation mysql> show collation; +--------------------------+----------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +--------------------------+----------+-----+---------+----------+---------+ | big5_chinese_ci | big5 | 1 | Yes | Yes | 1 | | big5_bin | big5 | 84 | | Yes | 1 | | dec8_swedish_ci | dec8 | 3 | Yes | Yes | 1 | | dec8_bin | dec8 | 69 | | Yes | 1 | | cp850_general_ci | cp850 | 4 | Yes | Yes | 1 | | cp850_bin | cp850 | 80 | | Yes | 1 | | hp8_english_ci | hp8 | 6 | Yes | Yes | 1 | | hp8_bin | hp8 | 72 | | Yes | 1 | | koi8r_general_ci | koi8r | 7 | Yes | Yes | 1 | | koi8r_bin | koi8r | 74 | | Yes | 1 | | latin1_german1_ci | latin1 | 5 | | Yes | 1 | | latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 | 〜 | utf8_general_ci | utf8 | 33 | Yes | Yes | 1 | | utf8_bin | utf8 | 83 | | Yes | 1 | | utf8_unicode_ci | utf8 | 192 | | Yes | 8 | | utf8_icelandic_ci | utf8 | 193 | | Yes | 8 | | utf8_latvian_ci | utf8 | 194 | | Yes | 8 | | utf8_romanian_ci | utf8 | 195 | | Yes | 8 | 〜 61/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 63. utf8_general_ci ✓ charset utf8 のデフォルトの collation ✓ ASCII/ラテン文字の大文字小文字を区別しな い ✓ A=a 62/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 64. utf8_bin ✓ char(n) binary として宣言した時の collation ✓ すべての文字を区別する ✓ A != a 63/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 65. utf8_unicode_ci ✓ Unicode Collation Algorithm (UCA) によ る collation ✓ 大文字/小文字/全角/半角/カタカナ/ひらが な/濁音を区別しない ✓ a=A=A ✓ は=ば=ぱ=ハ=バ=パ=ハ ✓ http://tmtm.org/tmp/mysql_unicode_collation.html 64/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 66. 文字コードが関係するもの ✓ クライアント ✓ 接続 ✓ データベース ✓ テーブル ✓ カラム 65/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 67. 同じテーブルの カラム毎に異な る文字コードを 指定可能 66/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 68. クライアント- サーバー間 で自動変換 67/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 69. ハマりたく なかったら utf8に統一 68/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 70. ストレージ エンジン 69/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 71. データをディス ク(か何か)に保存 &取り出すレ イヤ 初心者向けMySQLの始め方 - MySQL Beginners Talk 70/80 Powered by Rabbit 1.0.6
  • 72. SQLのこと なんて(あんま り)知らない 71/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 73. InnoDB / MyISAM / CSV / BLACKHOLE / MEMORY / MRG_MYISAM / ARCHIVE 72/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 74. InnoDB / MyISAM / CSV / BLACKHOLE / MEMORY / MRG_MYISAM / ARCHIVE 73/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 75. InnoDB ✓ デフォルトのストレージエンジン ✓ トランザクション ✓ レコードロック 74/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 76. MyISAM ✓ システムテーブル(mysql.*)で使用 ✓ トランザクション未対応 ✓ テーブルロック ✓ 全文検索(日本語不可) ✓ 位置情報 75/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 77. 初心者は 黙って InnoDB 初心者向けMySQLの始め方 - MySQL Beginners Talk 76/80 Powered by Rabbit 1.0.6
  • 78. おまけ 77/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 79. mroonga ✓ コミュニティ版ストレージエンジン ✓ 高速日本語全文検索 groonga ✓ 位置情報も ✓ mroonga = groonga ストレージエンジン ✓ 毎月肉の日(29日)リリース 78/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6
  • 80. 以上 初心者向けMySQLの始め方 - MySQL Beginners Talk 79/80 Powered by Rabbit 1.0.6
  • 81. まとめ ✓ 設定ファイルに注意 ✓ 初期状態のアクセス権は危険 ✓ 文字コードはutf8 ✓ ストレージエンジンはInnoDB 80/80 初心者向けMySQLの始め方 - MySQL Beginners Talk Powered by Rabbit 1.0.6