パスワード管理とリセット方法
パスワードの変更手順
MySQLでは、パスワードを変更するために複数のアプローチが存在します。状況に応じて適切な方法を選択します。
方法1: MySQLシェル内での変更
データベースにログインした状態で、以下のクエリを実行します。
mysql -uユーザー名 -p
ALTER USER 'ユーザー名'@'localhost' IDENTIFIED BY '新しいパスワード';
方法2: mysqladminコマンドの使用
ログインせずにコマンドラインから直接変更可能です。
# 既存パスワードがある場合
mysqladmin -uユーザー名 -p旧パスワード password 新パスワード
# パスワード未設定の場合
mysqladmin -uユーザー名 password 設定パスワード
パスワード忘れ時の対応
ローカル環境でパスワードを忘れた場合は、認証をバイパスしてリセットできます。ただし、本番環境では推奨されません。
手順:
- 管理者権限でコマンドプロンプトを起動
- MySQLサービスを停止:
net stop mysql - 認証テーブルをスキップして起動:
mysqld --skip-grant-tables --shared-memory - 新規ターミナルを開き、パスワードなしで接続:
mysql -u root - パスワードを更新:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新パスワード'; - サービスを再起動:
net stop mysql net start mysql
文字コード設定と設定ファイル
現在のステータス確認
サーバー情報と文字コード設定は以下のコマンドで確認できます。
STATUS;
または
\s
設定ファイルの編集
クライアントとサーバー間で文字コードの不整合がある場合、文字化けが発生します。設定ファイルで統一することを推奨します。
my.ini(Windows)/ my.cnf(Linux)の設定例:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
設定変更後は、必ずサービスを再起動してください。
SQL基本コマンド一覧
データベース操作
-- データベース一覧表示
SHOW DATABASES;
-- データベース作成
CREATE DATABASE データベース名;
-- 作成時の詳細確認
SHOW CREATE DATABASE データベース名;
-- 文字コード変更
ALTER DATABASE データベース名 CHARACTER SET utf8mb4;
-- データベース削除
DROP DATABASE データベース名;
-- 使用するデータベースを選択
USE データベース名;
-- 現在選択中のデータベース確認
SELECT DATABASE();
テーブル操作
-- テーブル一覧表示
SHOW TABLES;
-- テーブル構造確認
DESC テーブル名;
-- テーブル作成
CREATE TABLE テーブル名 (
id INT,
name VARCHAR(50)
);
-- カラム定義の変更
ALTER TABLE テーブル名 MODIFY COLUMN name VARCHAR(100);
-- テーブル削除
DROP TABLE テーブル名;
レコード操作(CRUD)
-- 全件取得
SELECT * FROM テーブル名;
-- 特定カラムのみ取得
SELECT id, name FROM テーブル名;
-- レコード挿入(単件)
INSERT INTO テーブル名 (id, name) VALUES (1, 'サンプル');
-- レコード挿入(複数件)
INSERT INTO テーブル名 (id, name) VALUES
(2, 'データA'),
(3, 'データB');
-- レコード更新
UPDATE テーブル名 SET name = '更新内容' WHERE id = 1;
-- 条件指定削除
DELETE FROM テーブル名 WHERE id = 1;
-- 全件削除
DELETE FROM テーブル名;
ストレージエンジンについて
MySQLでは、データの保存・管理方法を定義する「ストレージエンジン」を選択できます。
主要なエンジン:
- InnoDB: デフォルトエンジン。トランザクション対応、ACID準拠、行レベルロックをサポート。
- MyISAM: 読み取り速度重視。トランザクション非対応。
- MEMORY: メモリ上にデータを保持。高速だが永続性なし。
現在のエンジン確認:
SHOW ENGINES;
-- 特定テーブルのエンジン確認
SHOW TABLE STATUS LIKE 'テーブル名';