Open5

MySQL 入門

ピン留めされたアイテム
Yuma ItoYuma Ito

データベースへの接続

mysql -u <user_name> -p <database_name>
  • -u: ユーザー名
  • -p: パスワードを対話型で入力
Yuma ItoYuma Ito

接続時にパスワードを入力しない方法(セキュリティーのためローカル環境限定)

以下の.cnfファイルを作成(ファイル名は任意)

password.cnf
[client]
password=<任意のパスワード>

このファイルを/etc/mysql/conf.d/配下に設置する。
mysql:8.0のDockerイメージだと自動的に読み込んでくれる)

Yuma ItoYuma Ito

MySQLの文字コード設定

現在の設定を確認するコマンド

mysql> show variables like "chara%";
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.02 sec)

mysqlコマンドで接続すると日本語が正しく表示されない

character_set_clientcharacter_set_connectionlatin1になっていたのが原因。

文字コードのデフォルト設定を変更する必要がある。
※使用しているDockerイメージはmysql:8.0

  1. カスタム用の.cnfファイルを作成する
custom.cnf
[client]
default-character-set=utf8mb4
  1. docker-compose.ymlでファイルマウントする(またはコンテナ起動時に-v
docker-compose.yml
  db:
    image: mysql:8.0
    volumes:
      - ./db/my.conf.d:/etc/mysql/conf.d/

/etc/mysql/my.cnfにてconf.dフォルダ内のファイルを読み込んでいる。

  1. コンテナを起動すると設定が反映されている

参考

Yuma ItoYuma Ito

データベースの作成

CREATE DATABASE database_name;

MySQL :: MySQL 8.0 リファレンスマニュアル :: 13.1.12 CREATE DATABASE ステートメント

ユーザーに権限を付与する

GRANT ALL PRIVILEGES ON database_name . table_name TO  user_name @ hostname;

例
GRANT ALL PRIVILEGES ON test.* TO huser@'%';

※database_nameなどに特殊文字が入る場合は、', ", ` で囲む

MySQL :: MySQL 8.0 リファレンスマニュアル :: 13.7.1.6 GRANT ステートメント

ユーザーの権限の確認

SHOW GRANTS FOR username @ hostname;