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