【Ruby】MySQL に接続してみる その1
前置き
今回の環境は、Windows10、Ruby 2.6.6、MySQL 8.0.22 です。
C:\Users\gyobo>ruby --version ruby 2.6.6p146 (2020-03-31 revision 67876) [x64-mingw32] C:\Users\gyobo>mysql --version mysql Ver 8.0.22 for Win64 on x86_64 (MySQL Community Server - GPL)
MySQL の準備
Windows版の MySQL のインストールについては、ネットに様々、情報が出ていますので、そちらを参考にセットアップしてください。例えばこことか。Windows 版 MySQL インストール手順 - Qiita
セットアップするのは、「MySQL Community Server」です。
導入の際、「MySQL for Visual Studio」とか「Connector/Python」とか、使わないものは入れないでいいです。「Workbench」はコマンド苦手な人には便利なので、入れていいと思います。
インストール後、コマンドプロンプト上で、mysql --version
としたときにバージョン情報が出ない場合は、パスがちゃんと通ってませんので、環境変数のパスを追加しましょう。デフォルトでインストールしているなら、C:\Program Files\MySQL\MySQL Server 8.0\bin
です。
MySQL 側の準備
Ruby でアクセスする情報を、MySQL側に準備しておきます。
今回は、インストール時に「gyobo」の名前でユーザーを作っておいたので、そのユーザーでログインし、作っていきます。
とりあえず、ログインして・・・
C:\Users\gyobo>mysql -u gyobo -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.22 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
world
という名前のデータベースを作ってみます。今回はこだわりがないので、名前だけ指定して生成します。
mysql> CREATE DATABASE world; Query OK, 1 row affected (0.01 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | world | +--------------------+ 5 rows in set (0.00 sec)
MySQL 8.0 では、デフォルトの文字コードはutf8mb4
、照合順序は utf8mb4_0900_ai_ci
になっています。
mysql> SELECT @@character_set_database, @@collation_database; +--------------------------+----------------------+ | @@character_set_database | @@collation_database | +--------------------------+----------------------+ | utf8mb4 | utf8mb4_0900_ai_ci | +--------------------------+----------------------+ 1 row in set (0.00 sec)
utf8mb4
は、絵文字などの4バイト文字が使える文字コードです。昔、タブレットからも入力があるシステムなのに、誤って utf8
でデータベース、テーブルを作ってしまって、開発の後半になってから「絵文字どうしよう・・・」になった思い出がありますが、デフォルトになってくれたので、その心配はなくなっています。
照合順序は、文字の比較や並べ替えに使用するルールです。utf8mb4_0900_ai_ci
は、文字コードutf8mb4
で、Accent Insensitive(アクセント無視)、Case Insensitive(大文字小文字無視)、ということになります。
続いて、テーブルを作成します。USE
句を使って、デフォルトのデータベースを world
に変更して、CREATE TABLE
文でテーブルを作成します。今回は、キーとか制約、インデックスのこだわりもないので、列名と型の指定だけで作成します。
mysql> USE world Database changed mysql> CREATE TABLE country(id INT, name VARCHAR(20)); Query OK, 0 rows affected (0.05 sec) mysql> DESC country; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.01 sec)
適当に、データも入れておきます。
mysql> INSERT INTO country(id, name) VALUES (1, '日本'); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO country(id, name) VALUES (2, 'アメリカ'); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO country(id, name) VALUES (3, 'イギリス'); Query OK, 1 row affected (0.01 sec) mysql> select * from country; +------+----------+ | id | name | +------+----------+ | 1 | 日本 | | 2 | アメリカ | | 3 | イギリス | +------+----------+ 3 rows in set (0.00 sec)
このデータに、Ruby のコードからアクセスしてみようと思います。
少し長くなってきたので、次の記事に続きます。
※ DB側の設定はもう一つあって、Ruby からアクセスする際、ユーザー認証の「認証プラグイン」についての設定を変更する必要があります。そちらは続きの記事で。