MySQL - user000422/0 GitHub Wiki

基本情報

Ver セキュリティサポート(Extended Support)
5.7 2023年10月
8.0 2026年4月

設定ファイル … my.ini(Windows)、my.cnf(Unix)

初期からあるデータベースは文字コードの設定が不適切な場合があるため 作成したデータベースで作業を行うこと(日本語が文字化けするデータベースになっていたりする) Oracleは文字列を示す場合はシングルクォーテーションで囲む必要がある

構築

設定ファイル /etc/my.cnf

[mysqld]
# パスワード有効期限(ver8は初期値0?)
default-password-lifetime=0

# ログファイルのパス
log-error=/var/log/mysqld.log

操作(Unix)

■設定ファイル(RHEL6)(RHEL8)/etc/my.cnf 設定ファイル変更手順 : MySQL停止 > ファイル編集 > MySQL起動

# ステータス確認(RHEL8)
systemctl status mysqld

# 起動(RHEL8)
systemctl start mysqld

# 接続
# -h : ホスト, -u : ユーザ, -p パスワード, -D データベース名
mysql -hlocalhost -u sample_user -p -D sample_db

# 再起動(RHEL6 MySQL5)
/etc/init.d/mysqld restart
# ■接続後

# 文字コード確認
SHOW VARIABLES LIKE 'char%';

# 一覧表示
SHOW databases; # データベース一覧
SHOW tables;    # テーブル一覧
SHOW INDEX FROM sample_table; # インデックス

# 使用するデータベースを設定
use sample_db;
# ユーザ一覧表示(カラム数が多いため下記のように絞ること)
SELECT user, host FROM mysql.user;

# ユーザの権限表示
SELECT User, Host, Select_priv, Insert_priv, Update_priv, Delete_priv FROM mysql.user;

# データベースの作成
CREATE DATABASE sample_db;

# ユーザの作成
CREATE USER 'sample_user'@'localhost' IDENTIFIED BY 'password';
# ユーザの削除
DROP USER sample_user@localhost;

# データベースの操作権限をユーザに付与
GRANT ALL PRIVILEGES ON sample_db.* TO 'sample_user'@'localhost';

# テーブル作成
# オプションはスペース区切り
# サンプルとしてすべてのオプション例
CREATE TABLE m_car_model(
  sample_col varchar(10) COLLATE ujis_japanese_ci NOT NULL PRIMARY KEY DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  sample_num int(5) DEFAULT 0
);

# テーブル定義確認
SHOW FULL COLUMNS FROM sample_table;

# 外部キーを削除
ALTER TABLE sample_table DROP FOREIGN KEY sample_key;

■ダンプ

# mysqlコマンドではなく Unixコマンド(mysqlから抜けておく)
mysqldump -u sample_user -p -h localhost sample_db sample_table > /tmp/sample_table_dump.sql

設定ファイル

/etc/my.cnf

[mysqld]
datadir=
user=mysql

[client]

応用

-- ■文字列を指定順序でソートしたい
SELECT * FROM users ORDER BY 
CASE 
  WHEN status = 'tmp' THEN 0 -- 優先順位 1
  WHEN status = 'act' THEN 1 -- 優先順位 2
END;

【エラー】ユーザー作成したのに外部からアクセスできないんですけど

■エラーコード: 28000 Access denied for user (using password: YES)

-- 認証方式を確認
SELECT user, host, plugin FROM mysql.user WHERE user = 'ユーザ名' AND host = 'ホスト';

-- 認証方式が「caching_sha2_password」の場合は変更する
ALTER USER 'ユーザ名'@'ホスト' IDENTIFIED WITH 'mysql_native_password' BY 'password';
FLUSH PRIVILEGES;

-- その後はリフレッシュするためにパスワードを別のパスワードに変更(その後元に戻しても良い)