Open5
MySQL 入門
ピン留めされたアイテム
データベースへの接続
mysql -u <user_name> -p <database_name>
-
-u
: ユーザー名 -
-p
: パスワードを対話型で入力
接続時にパスワードを入力しない方法(セキュリティーのためローカル環境限定)
以下の.cnf
ファイルを作成(ファイル名は任意)
password.cnf
[client]
password=<任意のパスワード>
このファイルを/etc/mysql/conf.d/
配下に設置する。
(mysql:8.0
のDockerイメージだと自動的に読み込んでくれる)
テーブルの一覧
SHOW TABLES;
MySQL :: MySQL 8.0 リファレンスマニュアル :: 13.7.7.39 SHOW TABLES ステートメント
カラムの一覧
SHOW COLUMNS FROM table_name;
MySQL :: MySQL 8.0 リファレンスマニュアル :: 13.7.7.5 SHOW COLUMNS ステートメント
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_client
とcharacter_set_connection
がlatin1
になっていたのが原因。
文字コードのデフォルト設定を変更する必要がある。
※使用しているDockerイメージはmysql:8.0
- カスタム用の
.cnf
ファイルを作成する
custom.cnf
[client]
default-character-set=utf8mb4
-
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
フォルダ内のファイルを読み込んでいる。
- コンテナを起動すると設定が反映されている
参考
データベースの作成
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;