Ubuntu MATEでMySQLを使う

 以前、Knoppix5.1.1にPostgreSQLをインストールして「元号」データベースを構築したが、ここでは、Ubuntu MATEでMySQLを使った「元号」データベースを構築する。
 使用したPCの諸元は次の通りである。

PC
OS
メモリー
システム媒体
HP630 (Celeron T3500, 2.1GHz/2コア)
Ubuntu MATE 18.04.6 LTS (MATE 1.20.1) 64ビット
6GB
SSD 64GB

MySQLのインストール

 aptコマンドを使ってMySQLをインストールする。また、インストールの過程で不要なファイルができているので、これを削除する。

~$ sudo apt install mysql-server
~$ sudo apt autoremove

 MySQLのインストール直後はUbuntu MATE OSのrootとは別に、MySQLの特権ユーザーとしてのrootが作られている。インストール直後のrootはパスワードが不明なので、新規にパスワードを設定する。この作業は、mysqlモニターで行う。

~$ sudo mysql
  ・
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '。。。。。。' ;
mysql> flush privileges ;  ← 設定を反映
mysql> exit
  ・
~$ mysql -u root -p
Enter Password:  ← 設定したパスワードでログインできることを確認
  ・
mysql>

データベース❛gengo❜の作成

 root権限でデータベース❛gengo❜を作成する。MySQLの利用では、文字化けのトラブルに遭遇することがよくあるが、文字コードはutf8mb4(4バイトのUTF8)、照合順序は厳密な照合順序であるutf8mb4_binに統一しておくとトラブルを回避できる。

mysql> create database gengo character set = utf8mb4 collate = utf8mb4_bin ;
mysql> show create database gengo ;  ← 作成したデータベースの文字コードと称号順序を確認
+-----------+----------------------------------------------------------------------------------------+
| Database  | Create Database                                                                        |
+-----------+----------------------------------------------------------------------------------------+
| gengo     | CREATE DATABASE `gengo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin */  |
+-----------+----------------------------------------------------------------------------------------+

 特権ユーザrootで作業を行うのは危険なので、新たにデータベース❛gengo❜の管理者として、ユーザー❛myadmin(ユーザー名は任意)❜を作成し、データベース❛gengo❜の管理権限を付与する。

mysql>  create user 'ユーザー名'@'localhost' identified by '。。。。。。' ;  ← ユーザーを作成
mysql> grant all privileges on gengo.* to 'ユーザー名'@'localhost' ;  ← gengoにすべての権限を付与
mysql> flush privileges ;  ← 設定を反映
mysql>  show grants for 'ユーザー名'@'localhost' ;  ← ユーザーの権限を確認
+----------------------------------------------------------------------------------------+
| Grants for myadmin@localhost                                                           |
+----------------------------------------------------------------------------------------+
| GRANT  USAGE  ON  *.*  TO  'ユーザー名'@'localhost'                                      |
| GRANT  ALL  PRIVILEGES  ON  `gengo`.*  TO   'ユーザー名'@'localhost'                     |
+----------------------------------------------------------------------------------------+
mysql> exit
  ・
~$ mysql -u ユーザー名 -p  ← 作成したユーザー名でmysqlモニターにログイン
Enter Password:  ← 設定したパスワードでログインできることを確認
  ・
mysql> 

 テーブル❛main❜を作成する。フィールドの構成は以前紹介した「元号(年号)DBの作成」と同様だが、先頭フィールドに主キーを設定したフィールド❛id❜を追加する。
 テーブルの作成は、以下の内容で各フィールドを定義したSQLファイルをsourceコマンドで読み込むことで行う。

create table main (
	id int auto_increment not null ,
	nengo varchar(10) ,
	yomi varchar(20) ,
	hajime smallint ,
	owari smallint ,
	jidai varchar(10) ,
	primary key(id)
	) ;
~$ mysql -u ユーザー名 -p
  ・
mysql> use gengo ;
Database changed 
mysql> source ~/ダウンロード/def_table_main.txt
mysql> show columns from main ;  ← 作成したテーブルのフィールド構成を確認
+---------+----------------+--------+-----+----------+------------------------+
| Field   | Type           | Null   | Key | Default  | Extra                  |
+---------+----------------+--------+-----+----------+------------------------+
| id      | int(11)        | NO     | PRI | NULL     | auto_increment         |
| nengo   | varchar(10)    | YES    |     | NULL     |                        |
| yomi    | varchar(20)    | YES    |     | NULL     |                        |
| hajime  | smallint(6)    | YES    |     | NULL     |                        |
| owari   | smallint(6)    | YES    |     | NULL     |                        |
| jidai   | varchar(10)    | YES    |     | NULL     |                        |
+---------+----------------+--------+-----+----------+------------------------+

データのインポート

 load data infile構文を使ってテーブルに一括してデータをインポートする。ファイルのデータにはフィールド❛id❜のデータが含まれていないので、フィールド句を使ってフィールドの項目を指定する。
 なお、インポートするデータの文字コードはutf8mb4(4バイトのUTF8)である。

main_utf8.dat  ダウンロード

大化	たいか	645	650	飛鳥
白雉	はくち	650	655	飛鳥
朱鳥	しゅちょう	686	686	飛鳥
大宝	たいほう	701	704	飛鳥
慶雲	けいうん	704	708	飛鳥
   ・
   ・
   ・
mysql> load data local infile '~/ダウンロード/main_utf8.dat'  
        ー> into table main ( nengo , yomi , hajime , owari , jidai ) ;
Query OK, 248 rows affected (0.12 sec)
Records: 248  Deleted: 0  Skipped: 0  Warnings: 0

データベースの操作

 select命令を使って種々の条件で検索を行い、データベースの動作を確認する。

mysql> select * from main ;  ← テーブル‘main’のすべてのレコードを表示
+-----+-------------+-------------------------+--------+-------+--------------+
| id  | nengo       | yomi                    | hajime | owari | jidai        |
+-----+-------------+-------------------------+--------+-------+--------------+
|   1 | 大化         | たいか                   |    645 |   650 | 飛鳥         |
|   2 | 白雉         | はくち                   |    650 |   655 | 飛鳥         |
|   3 | 朱鳥         | しゅちょう                |    686 |   686 | 飛鳥         |
   ・
   ・
   ・
248 rows in set (0.00 sec)

mysql> select * from main where nengo like '%和' ;  ← テーブル‘main’でフィールド‘nengo’の
+-----+--------+--------------+--------+-------+--------+   末尾が‘和’であるレコードを表示
| id  | nengo  | yomi         | hajime | owari | jidai  |
+-----+--------+--------------+--------+-------+--------+
|  22 | 承和   | じょうわ       |    834 |   848 | 平安    |
|  29 | 仁和   | にんな         |    885 |   889 | 平安    |
|  38 | 応和   | おうわ         |    961 |   964 | 平安    |
   ・
   ・
   ・
19 rows in set (0.00 sec)

 

inserted by FC2 system