金子邦彦研究室インストールUbuntu, WSL2MySQL 8 のインストール,テーブル定義,レコード挿入(Ubuntu 上)

MySQL 8 のインストール,テーブル定義,レコード挿入(Ubuntu 上)

MySQL は, オープンソースのリレーショナルデータベース管理システムである. MySQL のインストールとテスト実行を行なう.

目次

  1. 事前に決めておく事項
  2. 前準備
  3. MySQL のインストール(Ubuntu 20.04 上)
  4. MySQL のバージョンの確認
  5. MySQL サーバの起動と終了
  6. MySQL root ユーザのパスワードの変更
  7. テーブル定義とレコード挿入

事前に決めておく事項

前準備

Ubuntu のシステム更新

UbuntuUbuntu で OS のシステム更新を行うときは, 次のコマンドを実行.

UbuntuUbuntu のインストールは別ページ »で説明

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

MySQL のインストール(Ubuntu 20.04 上)

  1. MySQL および関連ソフトウェア類のインストール

    インストールするには, 次のコマンドを実行.

    sudo apt -y update
    sudo apt -y install mysql-client mysql-server libcppdb-odbc0 python3-mysqldb
    
  2. 確認のため,MySQL サーバを再起動してみる.

    エラーメッセージが出なければ OK.

    sudo systemctl restart mysql
    systemctl status mysql
    

    [image]
  3. MySQL のサービスアカウントの確認

    [image]

    sudo cat /etc/passwd | grep mysql
    

    [image]

    ※ 「x」は no password という意味(パスワードがないという意味ではない)

    サービスアカウントは Linux が管理するアカウントのこと.MySQL が管理するアカウントとは別のものである.

  4. データベースディレクトリの確認

    /var/lib/mysql になる.

    sudo ls -la /var/lib/mysql
    

    [image]
  5. MySQL root ユーザのパスワードの設定,セキュリティ設定
    1. 「sudo mysql_secure_installation」の実行

      sudo mysql_secure_installation
      

      [image]
    2. パスワード検証コンポートネントをインストールする.

      y」, Enter キー

      [image]
    3. パスワード検証ポリシーを,0, 1, 2 から選ぶ.

      [image]
    4. MySQL root ユーザのパスワードの設定.

      HOGE$#34hoge5 のように設定する.

      パスワードは,必ず独自に設定してください.

      [image]
    5. パスワードの強度が表示されるので確認.

      y」, Enter キー

      [image]
    6. 匿名の MySQL ユーザを削除する.

      y」, Enter キー

      [image]
    7. MySQL root ユーザでの,リモートからのログインを禁止する.

      y」, Enter キー

      [image]
    8. テストデータベースを削除する.

      y」, Enter キー

      [image]
    9. いまの設定を,直ちに反映させる.

      y」, Enter キー

      [image]
    10. 終了の確認

      y」, Enter キー

      [image]
  6. MySQL の動作確認

    Ubuntu のアカウント root の言言で「mysql」を実行.

    「status」により,MySQL root ユーザで使用していること,そして 使用中のデータベースが無いことを確認.

    sudo mysql
    status
    show databases;
    exit
    

    [image]

    MySQL の auth_socket プラグインが使用されている. そのため,Ubuntu の root ユーザは, MySQL の root ユーザにログインしている. このときパスワードが不要であるのは正常動作である.

MySQL のバージョンの確認

mysqladmin -u root -p version

[image]

MySQL サーバの起動と終了

MySQL サーバの再起動

sudo systemctl restart mysql
systemctl status mysql

[image]

MySQL サーバの終了

sudo systemctl stop mysql
systemctl status mysql

[image]

MySQL root ユーザのパスワードの変更

パスワードは,英文字,数字,記号を使う.日本語は使わない

  1. MySQL/MariaDB が稼働した状態にする
  2. 端末で,次のコマンドを実行する.

    パスワードを新規に設定する場合は,次のように操作.

    mysqladmin --user=root password "(新しいパスワード)"
    

    すでにパスワードを設定済みで,変更をしたい場合は,次のように操作.

    mysqladmin --user=root --password=(古いパスワード) password "(新しいパスワード)"
    

テーブル定義とレコード挿入

  1. 「sudo mysql -d mysql」により起動.

    root」は MySQL データベース管理者のユーザ名,

    -D mysql」は,使用するデータベースを mysql に設定している.

    sudo mysql -D mysql
    

    [image]
  2. SQL を用いたテーブル定義

    create table order_records (
        id            integer primary key not null,
        year          integer not null CHECK ( year > 2008 ),
        month         integer not null CHECK ( month >= 1 AND month <= 12 ),
        day           integer not null CHECK ( day >= 1 AND day <= 31 ),
        customer_name text not null,
        product_name  text not null,
        unit_price    real not null check ( unit_price > 0 ),
        qty           integer not null default 1 check ( qty > 0 ),
        created_at    timestamp not null default current_timestamp,
        updated_at    timestamp not null default current_timestamp on update current_timestamp,
        check ( ( unit_price * qty ) < 200000 ) );
    

    [image]
  3. SQL を用いたレコード挿入

    start transaction;
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1, 2023, 7, 26,  'kaneko', 'orange A', 1.2, 10 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 2, 2023, 7, 26,  'miyamoto', 'Apple M',  2.5, 2 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 3, 2023, 7, 27,  'kaneko',   'orange B', 1.2, 8 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price) values( 4, 2023, 7, 28,  'miyamoto',   'Apple L', 3 );
    commit;
    

    [image]
  4. 確認表示

    select * from order_records; 
    

    [image]
  5. 更新し確認表示

    start transaction;
    update order_records set unit_price = 11.2 where id = 1;
    commit;
    select * from order_records;
    

    [image]
  6. テーブル一覧の表示
    show tables;
    

    [image]
  7. \quit」で終了.
    exit
    

    [image]