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)
-
前の記事
はじめてのWordPress 2023.02.19
-
次の記事
PythonでMySQLに接続(CUI) 2023.03.15