仮想開発環境の構築トップページ


MySQL を使う

ここの手順で Ubuntu の設定をすると MySQL データベース管理システムがインストールされています.このページでは MySQL を使った検索方法などを確認しよう.

目次

  1. データベース操作の基本
  2. Ngram インデックス
  3. MeCab インデックス
  4. mecab-ipadic-NEologd を使った MeCab インデックス
  5. 他のホストからの接続

他のホストからの接続

ここでは MySQL データベースサーバ(IP アドレス 192.168.56.101)にリモートホスト(IP アドレス 192.168.56.100) から接続する方法について説明します.

クライアントの IP アドレス確認

まず,クライアント(リモートホスト)の IP アドレスを次のコマンドで確認します.

vagrant@ubuntu2204 ~ $ ip a ⏎
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:33:5e:cb brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 85959sec preferred_lft 85959sec
    inet6 fe80::a00:27ff:fe33:5ecb/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:f9:0b:ce brd ff:ff:ff:ff:ff:ff
    altname enp0s8
    inet 192.168.56.100/24 brd 192.168.56.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fef9:bce/64 scope link
       valid_lft forever preferred_lft forever
vagrant@ubuntu2204 ~ $

目次に戻る

サーバの IP アドレス確認

サーバのIPアドレスも同じコマンドで確認します.

vagrant@ubuntu2204 ~ $ ip a ⏎
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:33:5e:cb brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 76867sec preferred_lft 76867sec
    inet6 fe80::a00:27ff:fe33:5ecb/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ae:98:a7 brd ff:ff:ff:ff:ff:ff
    altname enp0s8
    inet 192.168.56.101/24 brd 192.168.56.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feae:98a7/64 scope link
       valid_lft forever preferred_lft forever
vagrant@ubuntu2204 ~ $

目次に戻る

ユーザ登録(サーバでの操作)

サーバ側の操作で root ユーザで MySQL にログインします.ユーザ情報が格納されているのは mysql データベースです.

vagrant@ubuntu2204 ~ $ mysql -u root -p ⏎
Enter password: # パスワードを入力(表示されない)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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.

mysql> SHOW DATABASES; ⏎
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testDB             |
+--------------------+
5 rows in set (0.01 sec)

mysql>

ユーザの一覧を確認します.利用するデータベースを USE で指定しなくとも,データベース名.テーブル名 でデータを取得できます.dbuser というユーザが登録されていますが,localhost からのアクセスしか許可されていません.

mysql> SELECT User, Host FROM mysql.user; ⏎
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| dbuser           | localhost |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

mysql>

リモートからアクセスできるように IP アドレスを指定して dbuser を作成し,パスワードを設定します.さらに,testDB データベースの全てのテーブルに権限を与えます.

mysql> CREATE USER 'dbuser'@'192.168.56.100' IDENTIFIED BY 'hogehogehoge'; ⏎
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT ALL PRIVILEGES ON testDB.* TO 'dbuser'@'192.168.56.100'; ⏎
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES; ⏎
Query OK, 0 rows affected (0.02 sec)

mysql>

ユーザが登録できていることを確認します.

mysql> SELECT User, Host FROM mysql.user; ⏎
+------------------+----------------+
| User             | Host           |
+------------------+----------------+
| dbuser           | 192.168.56.100 |
| dbuser           | localhost      |
| debian-sys-maint | localhost      |
| mysql.infoschema | localhost      |
| mysql.session    | localhost      |
| mysql.sys        | localhost      |
| root             | localhost      |
+------------------+----------------+
7 rows in set (0.00 sec)

mysql>

目次に戻る

クライアントからの接続

クライアントから接続します.このときサーバの IP アドレスを -h 引数で指定します.

vagrant@ubuntu2204 ~ $ mysql -h 192.168.56.101 -u dbuser -p ⏎
Enter password: # パスワードを入力(表示されない)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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.

mysql> SHOW DATABASES; ⏎
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| testDB             |
+--------------------+
3 rows in set (0.01 sec)

mysql> USE testDB; ⏎
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT id, body,
    MATCH(body) AGAINST("自然言語" IN NATURAL LANGUAGE MODE) as score
    FROM mecab_articles; ⏎
+----+--------------------------------------------------------------------------------------------------+---------------------+
| id | body                                                                                             | score               |
+----+--------------------------------------------------------------------------------------------------+---------------------+
|  1 | 今日の天気は雨です                                                                               |                   0 |
|  2 | 明日の天気も雨でしょう                                                                           |                   0 |
|  3 | 明日の天気も晴れでしょう                                                                         |                   0 |
|  4 | 今日の天気は晴れです                                                                             |                   0 |
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |  0.5901209115982056 |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |  0.5901209115982056 |
|  7 | この資料はジャズのライブについてまとめた資料です                                                 |                   0 |
|  8 | 自然言語処理の基本を説明します                                                                   |  0.5901209115982056 |
|  9 | We consider a software rejuvenation schedule.                                                    |                   0 |
| 10 | We propose an extended warranty service contract.                                                |                   0 |
| 11 | This model evaluates the quality characteristics of software.                                    |                   0 |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   | 0.22764469683170319 |
+----+--------------------------------------------------------------------------------------------------+---------------------+
12 rows in set (0.01 sec)

mysql> EXIT ⏎
Bye
vagrant@ubuntu2204 ~ $

目次に戻る