1. はじめに MySQLは、データベース管理システム(DBMS)の中でも広く利用されているオープンソースのリレーショナルデータベースです。特に、Webアプリケーションやエンタープライズシステムで広く活用されています。本記事では、MySQLの基本的なコマンドについて詳しく解説し、初心者から中級者までがスムーズに学べるように構成しています。1.1 MySQLとは? MySQLは、リレーショナルデータベース(RDB)を管理するためのソフトウェアです。データはテーブル形式で保存され、SQL(Structured Query Language)を使用してデータを操作します。MySQLは以下のような特徴を持っています。オープンソース であり、誰でも無料で利用可能高速で軽量 な動作が特徴多くのプログラミング言語と互換性 がある(PHP, Python, Java など)大規模データベースの運用にも対応 1.2 MySQLコマンドを学ぶメリット MySQLを効率的に利用するためには、基本的なコマンドを理解しておくことが重要です。以下のような利点があります。データ管理の効率化 :SQLコマンドを使いこなせば、データの取得・更新・削除が迅速に行える業務の自動化 :スクリプトを活用することで、データベース操作を自動化できるエラー対応がスムーズ :問題が発生した際に、適切なSQLコマンドで解決できる1.3 本記事で学べること この記事では、以下の内容について詳しく解説します。MySQLの基本操作(起動・接続・データベース操作) データの追加・取得・更新・削除(CRUD操作) ユーザー管理と権限設定 便利なコマンドやトラブルシューティング これから順番に、各セクションの詳細な説明に入っていきます。まずは、MySQLの基本操作から見ていきましょう。
2. MySQLの基本操作(初心者向け) 2.1 MySQLの起動と接続 2.1.1 MySQLの起動 MySQLは、サーバープログラムとして動作するため、まずサーバーを起動する必要があります。起動方法はOSによって異なります。Linux / macOSでの起動 LinuxやmacOSでは、systemctl コマンドを使ってMySQLを起動できます。sudo systemctl start mysqlMySQLの起動状態を確認する sudo systemctl status mysql 「active(running)」と表示されていれば、MySQLは正常に起動しています。Windowsでの起動 Windowsでは、MySQLをサービスとして実行することが多いため、net start コマンドを使用します。net start mysql または、XAMPPを使用している場合は、XAMPPのコントロールパネルから「MySQL」を「Start」にすればOKです。2.1.2 MySQLへの接続 MySQLに接続するためには、mysql コマンドを使用します。基本的な接続コマンドは以下のとおりです。mysql -u ユーザー名 -prootユーザーで接続 初期状態では、root ユーザーが管理者として設定されています。以下のコマンドで接続できます。mysql -u root -p Enterキーを押すと、パスワードの入力を求められます。正しいパスワードを入力すれば、MySQLにログインできます。特定のホストへ接続 リモートのMySQLサーバーに接続する場合は、-h オプションを使います。mysql -h ホスト名 -u ユーザー名 -p 例えば、192.168.1.100 のMySQLサーバーに接続する場合は、以下のように記述します。mysql -h 192.168.1.100 -u root -pポート番号を指定して接続 MySQLのデフォルトのポート番号は 3306 ですが、変更されている場合は -P オプションで指定できます。mysql -h 192.168.1.100 -P 3307 -u root -p2.2 MySQLの基本的なコマンド MySQLに接続できたら、基本的な操作コマンドを実行してみましょう。2.2.1 MySQLのバージョンを確認 現在使用しているMySQLのバージョンを確認するには、次のコマンドを実行します。SELECT VERSION();2.2.2 現在のデータベースを確認 現在選択されているデータベースを確認するには、次のコマンドを実行します。SELECT DATABASE(); 何も選択されていない場合は NULL が返されます。2.2.3 利用可能なデータベースの一覧を表示 MySQL内に存在するデータベースを一覧表示するには、次のコマンドを使用します。SHOW DATABASES;2.3 よくあるエラーと対処法 2.3.1 「Access denied」エラー エラー例:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)解決方法: パスワードが正しいか確認 root の権限を確認し、再設定するALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新しいパスワード';
FLUSH PRIVILEGES;2.3.2 「Can’t connect to MySQL server on ‘localhost’」エラー エラー例:ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)解決方法: MySQLが起動しているか確認 (systemctl status mysql) MySQLを再起動する sudo systemctl restart mysql2.4 まとめ このセクションでは、MySQLの起動と接続方法について解説しました。
3. データベースの操作 MySQLでは、データを管理するために データベース(Database) を作成し、その中に テーブル(Table) を配置して情報を整理します。このセクションでは、データベースの作成・選択・一覧表示・削除などの基本的な操作について詳しく解説します。3.1 データベースの作成 MySQLでデータベースを作成するには、CREATE DATABASE コマンドを使用します。3.1.1 基本的なデータベースの作成 以下のSQLコマンドを実行すると、新しいデータベース my_database を作成できます。CREATE DATABASE my_database;作成成功時のメッセージ Query OK, 1 row affected (0.01 sec)3.1.2 すでに存在するデータベースを作成しようとした場合 データベースが既に存在していると、次のようなエラーが表示されます。ERROR 1007 (HY000): Can't create database 'my_database'; database exists このエラーを防ぐには、IF NOT EXISTS オプションを使用すると便利です。CREATE DATABASE IF NOT EXISTS my_database; このコマンドを実行すると、データベースが存在しない場合のみ作成されます。3.2 データベースの一覧表示 現在のMySQLサーバー内にあるデータベースを確認するには、SHOW DATABASES コマンドを使用します。SHOW DATABASES; 出力例:+--------------------+
| Database |
+--------------------+
| information_schema |
| my_database |
| mysql |
| performance_schema |
| sys |
+--------------------+ ※ mysql や information_schema などのシステムデータベースは、MySQLの管理に必要なものです。3.3 データベースの選択 MySQLでは、作成したデータベースを選択して使用する必要があります。データベースを指定するには USE コマンドを実行します。USE my_database;成功時のメッセージ Database changed 現在選択されているデータベースを確認するには、以下のコマンドを使用します。SELECT DATABASE(); 出力例:+------------+
| DATABASE() |
+------------+
| my_database |
+------------+3.4 データベースの削除 不要になったデータベースを削除するには、DROP DATABASE コマンドを使用します。DROP DATABASE my_database;3.4.1 削除前の注意点 削除するとすべてのデータが消えるため注意! 誤って削除しないように、IF EXISTS を付けることも可能です。 DROP DATABASE IF EXISTS my_database; このコマンドは、my_database が存在しない場合でもエラーを出さずに処理を終了します。3.5 よくあるエラーと対策 3.5.1 「Access denied for user」エラー エラー例:ERROR 1044 (42000): Access denied for user 'user_name'@'localhost' to database 'my_database'解決策 GRANT ALL PRIVILEGES ON my_database.* TO 'user_name'@'localhost';
FLUSH PRIVILEGES;3.5.2 「Can’t drop database」エラー エラー例:ERROR 1010 (HY000): Error dropping database (can't rmdir './my_database', errno: 39)解決策 sudo systemctl restart mysqlmy_database のすべてのテーブルを削除してから DROP DATABASE を実行する。3.6 まとめ このセクションでは、データベースの作成・選択・一覧表示・削除について学びました。
4. テーブルの操作 データベースを作成した後は、その中にテーブル(Table) を作成してデータを整理する必要があります。テーブルとは、データを格納するための表のようなもので、カラム(列)と行(レコード)で構成されています。 このセクションでは、テーブルの作成・確認・一覧表示・削除 などの基本操作を詳しく解説します。4.1 テーブルの作成 テーブルを作成するには、CREATE TABLE コマンドを使用します。以下のSQLを実行すると、users というテーブルが作成されます。CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);4.1.1 テーブル作成時の各要素の説明 id INT AUTO_INCREMENT PRIMARY KEYid カラムは整数型(INT)で、自動的に増加(AUTO_INCREMENT)し、主キー(PRIMARY KEY)として設定。name VARCHAR(50) NOT NULLname カラムは最大50文字の文字列(VARCHAR)で、NOT NULL により必須項目。email VARCHAR(100) UNIQUE NOT NULLemail カラムは最大100文字の文字列で、UNIQUE 制約により同じメールアドレスを重複登録不可。created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMPcreated_at カラムは、デフォルト値として現在の日時を自動設定。成功時のメッセージ Query OK, 0 rows affected (0.02 sec)4.2 テーブルの構造を確認 作成したテーブルの構造を確認するには、DESC または SHOW COLUMNS を使用します。DESC users; またはSHOW COLUMNS FROM users; 出力例:+------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| email | varchar(100) | NO | UNI | NULL | |
| created_at | timestamp | YES | | CURRENT_TIMESTAMP | |
+------------+--------------+------+-----+-------------------+----------------+4.3 テーブルの一覧を表示 現在のデータベース内に存在するテーブルの一覧を確認するには、SHOW TABLES コマンドを実行します。SHOW TABLES; 出力例:+------------------+
| Tables_in_mydb |
+------------------+
| users |
| products |
| orders |
+------------------+4.4 テーブルの削除 不要になったテーブルを削除するには、DROP TABLE コマンドを使用します。DROP TABLE users;4.4.1 テーブル削除時の注意点 削除するとデータが完全に消えるため注意! 誤って削除しないように、IF EXISTS を付けるとエラーを防げる。 DROP TABLE IF EXISTS users;成功時のメッセージ Query OK, 0 rows affected (0.01 sec)4.5 テーブルのデータをリセット(全削除) テーブルの構造はそのままで、中のデータだけを削除したい場合は、TRUNCATE TABLE を使用します。TRUNCATE TABLE users;DROP TABLE との違いDROP TABLE はテーブルそのものを削除する。TRUNCATE TABLE はデータのみを削除し、テーブルの構造は保持する。4.6 よくあるエラーと対策 4.6.1 「Table already exists」エラー エラー例:ERROR 1050 (42S01): Table 'users' already exists解決策 SHOW TABLES;CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);4.6.2 「Unknown table」エラー エラー例:ERROR 1051 (42S02): Unknown table 'users'解決策 SHOW TABLES; で対象のテーブルが存在するか確認存在しない場合は IF EXISTS をつける DROP TABLE IF EXISTS users;4.7 まとめ このセクションでは、MySQLのテーブルの作成・確認・削除の基本操作を解説しました。
5. データの操作(CRUD) データベースとテーブルを作成した後は、データを適切に追加・取得・更新・削除することが重要です。MySQLでは、データ操作の基本として CRUD (Create, Read, Update, Delete)と呼ばれる4つの操作が行えます。 このセクションでは、データの追加(INSERT)、取得(SELECT)、更新(UPDATE)、削除(DELETE)の方法を詳しく解説します。5.1 データの追加(INSERT) テーブルに新しいデータを追加するには、INSERT INTO コマンドを使用します。5.1.1 基本的なデータの追加 たとえば、users テーブルに新しいユーザーを追加するには、以下のSQLを実行します。INSERT INTO users (name, email) VALUES ('田中 太郎', 'tanaka@example.com');成功すると、次のメッセージが表示されます。 Query OK, 1 row affected (0.01 sec)5.1.2 複数のデータを一括追加 一度に複数のレコードを追加することも可能です。INSERT INTO users (name, email) VALUES
('佐藤 花子', 'sato@example.com'),
('鈴木 一郎', 'suzuki@example.com'),
('高橋 真由', 'takahashi@example.com');5.2 データの取得(SELECT) テーブル内のデータを取得するには、SELECT 文を使用します。5.2.1 すべてのデータを取得 users テーブルのすべてのデータを取得する場合、以下のSQLを実行します。SELECT * FROM users; 出力例:+----+------------+------------------+---------------------+
| id | name | email | created_at |
+----+------------+------------------+---------------------+
| 1 | 田中 太郎 | tanaka@example.com | 2024-02-01 10:00:00 |
| 2 | 佐藤 花子 | sato@example.com | 2024-02-01 10:01:00 |
| 3 | 鈴木 一郎 | suzuki@example.com | 2024-02-01 10:02:00 |
+----+------------+------------------+---------------------+5.2.2 特定のカラムだけを取得 特定のカラム(列)だけを表示したい場合は、カラム名を指定します。SELECT name, email FROM users;5.2.3 条件を指定してデータを取得 WHERE 句を使用すると、特定の条件に合致するデータのみを取得できます。SELECT * FROM users WHERE name = '佐藤 花子';5.2.4 並び替え(ORDER BY) データを昇順・降順に並び替えるには、ORDER BY を使用します。 昇順(小さい順) SELECT * FROM users ORDER BY id ASC;降順(大きい順) SELECT * FROM users ORDER BY id DESC;5.2.5 データの件数を制限(LIMIT) 最初の2件のみ取得する場合:SELECT * FROM users LIMIT 2;5.3 データの更新(UPDATE) テーブル内のデータを更新するには、UPDATE 文を使用します。5.3.1 指定したデータを更新 例えば、id = 2 のユーザーのメールアドレスを変更するには、以下のSQLを実行します。UPDATE users SET email = 'sato_hanako@example.com' WHERE id = 2;5.3.2 複数のカラムを同時に更新 UPDATE users SET name = '佐藤 美咲', email = 'misaki@example.com' WHERE id = 2;5.3.3 条件を指定しないと全件更新される 注意! WHERE 句を指定しないと、すべてのデータが更新されてしまいます。UPDATE users SET email = 'test@example.com'; -- ⚠️ すべてのユーザーのメールが変更される5.4 データの削除(DELETE) 不要なデータを削除するには、DELETE FROM 文を使用します。5.4.1 指定したデータを削除 id = 3 のユーザーを削除するには、以下のSQLを実行します。DELETE FROM users WHERE id = 3;5.4.2 すべてのデータを削除 注意! WHERE 句を省略すると、テーブル内のすべてのデータが削除されます。DELETE FROM users; -- ⚠️ 全データ削除(危険!)すべて削除する場合は、TRUNCATE TABLE を推奨 TRUNCATE TABLE users;DELETE は行ごとに削除処理を行いますが、TRUNCATE TABLE はテーブルを初期化するため、高速です。5.5 まとめ このセクションでは、データの追加(INSERT)、取得(SELECT)、更新(UPDATE)、削除(DELETE)の基本的な操作を学びました。
6. ユーザー管理と権限設定 MySQLでは、データベースのセキュリティを確保するために、ユーザーごとに適切な権限を設定する ことが重要です。特に、複数の開発者が関わるプロジェクトや、本番環境のデータベースでは、ユーザー管理が不可欠です。 このセクションでは、MySQLのユーザー管理と権限設定について詳しく解説します。6.1 MySQLのユーザー管理 MySQLのユーザー情報は、mysql データベースの user テーブルに格納されています。ユーザー管理の基本として、ユーザーの作成・一覧表示・削除 の方法を学びましょう。6.1.1 ユーザーの作成 新しいユーザーを作成するには、CREATE USER コマンドを使用します。CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123'; このコマンドの意味:new_user というユーザーを作成localhost(ローカル接続のみ許可)password123 をパスワードとして設定リモートアクセス用のユーザーを作成 サーバー外からMySQLにアクセスする場合は、'%' を指定します。CREATE USER 'remote_user'@'%' IDENTIFIED BY 'securepassword';% はすべてのIPアドレスからのアクセスを許可 することを意味します。6.2 ユーザーの一覧表示 作成済みのユーザー一覧を確認するには、mysql.user テーブルを参照します。SELECT user, host FROM mysql.user; 出力例:+-----------+-----------+
| user | host |
+-----------+-----------+
| root | localhost |
| new_user | localhost |
| remote_user | % |
+-----------+-----------+ この表では、各ユーザーの user(ユーザー名)と host(接続可能なホスト)を確認できます。6.3 ユーザーの削除 不要なユーザーを削除するには、DROP USER コマンドを使用します。DROP USER 'new_user'@'localhost';削除後の注意点 ユーザーを削除すると、そのユーザーの権限も削除されます。 誤って削除した場合は、再度 CREATE USER で作成する必要があります。 6.4 権限の管理 MySQLでは、ユーザーごとに権限を設定し、操作できる範囲を制限することができます。6.4.1 権限の付与(GRANT) ユーザーに特定の権限を与えるには、GRANT コマンドを使用します。GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost'; このコマンドは、new_user に my_database のすべての権限を付与します。特定の権限のみを付与 GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'new_user'@'localhost'; このコマンドでは、new_user に データの取得(SELECT)、挿入(INSERT)、更新(UPDATE) のみを許可しています。6.5 権限の確認 ユーザーの権限を確認するには、SHOW GRANTS コマンドを使用します。SHOW GRANTS FOR 'new_user'@'localhost'; 出力例:+------------------------------------------------------------+
| Grants for new_user@localhost |
+------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'new_user'@'localhost' |
+------------------------------------------------------------+6.6 権限の削除(REVOKE) ユーザーから特定の権限を取り消すには、REVOKE コマンドを使用します。REVOKE INSERT, UPDATE ON my_database.* FROM 'new_user'@'localhost'; このコマンドを実行すると、new_user は INSERT(追加)と UPDATE(更新) の権限を失います。6.7 パスワードの変更 6.7.1 ユーザーのパスワードを変更 MySQLユーザーのパスワードを変更するには、ALTER USER を使用します。ALTER USER 'new_user'@'localhost' IDENTIFIED BY 'newpassword123';6.7.2 rootユーザーのパスワードを変更 管理者(root)のパスワードを変更するには、以下のコマンドを実行します。ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'strongpassword'; パスワードを変更した後は、権限を適用するために FLUSH PRIVILEGES を実行します。FLUSH PRIVILEGES;6.8 よくあるエラーと対策 6.8.1 「Access denied」エラー エラー例:ERROR 1045 (28000): Access denied for user 'new_user'@'localhost' (using password: YES)解決策 SHOW GRANTS FOR 'new_user'@'localhost';GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;6.8.2 「User already exists」エラー エラー例:ERROR 1396 (HY000): Operation CREATE USER failed for 'new_user'@'localhost'解決策 DROP USER 'new_user'@'localhost';
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';6.9 まとめ このセクションでは、MySQLのユーザー管理と権限設定 について詳しく解説しました。
特に重要なポイント:CREATE USER でユーザー作成GRANT で権限を付与SHOW GRANTS で権限を確認ALTER USER でパスワード変更
7. MySQLの便利コマンド(中級者向け) MySQLには、基本的なデータ操作(CRUD)以外にも、データベースの管理や最適化をサポートする便利なコマンド が多数用意されています。このセクションでは、データベースのバックアップ・復元、パフォーマンスの最適化、システム情報の確認 など、中級者向けのMySQLコマンドを紹介します。7.1 データベースのバックアップ データの損失を防ぐために、MySQLではバックアップ(エクスポート) と復元(インポート) ができます。7.1.1 mysqldump を使ったバックアップ mysqldump コマンドを使用すると、特定のデータベースのバックアップを取得できます。mysqldump -u root -p my_database > my_database_backup.sqlオプションの説明 -u root → root ユーザーで実行-p → パスワードを入力my_database → バックアップするデータベース名> → 出力先のファイル(例: my_database_backup.sql)7.1.2 すべてのデータベースをバックアップ すべてのデータベースを一括バックアップするには、--all-databases オプションを使用します。mysqldump -u root -p --all-databases > all_databases_backup.sql7.2 データベースの復元 バックアップデータをMySQLに復元するには、mysql コマンドを使用します。7.2.1 単一データベースを復元 mysql -u root -p my_database < my_database_backup.sql7.2.2 すべてのデータベースを復元 mysql -u root -p < all_databases_backup.sql7.3 実行中のプロセスの確認 MySQLサーバーの負荷状況や、どのクエリが実行されているかを確認するには、SHOW PROCESSLIST を使用します。SHOW PROCESSLIST; 出力例:+----+------+-----------+----+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+----------+------------------+
| 1 | root | localhost | my_database | Query | 10 | Sending data | SELECT * FROM users |
+----+------+-----------+----+---------+------+----------+------------------+7.3.1 現在実行中のすべてのプロセスを詳細に表示 SHOW FULL PROCESSLIST;7.4 クエリの最適化 7.4.1 実行計画を確認(EXPLAIN) EXPLAIN コマンドを使用すると、クエリの実行計画を確認し、パフォーマンスの問題を特定できます。EXPLAIN SELECT * FROM users WHERE email = 'test@example.com'; 出力例:+----+-------------+-------+------+---------------+------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+-------+------+-------+
| 1 | SIMPLE | users | ref | email_index | email| 62 | const | 1 | |
+----+-------------+-------+------+---------------+------+---------+-------+------+-------+possible_keys:使用可能なインデックスkey:実際に使用されたインデックスrows:検索対象となった行数(少ないほど高速)7.5 インデックスの確認 データ量が増えると検索が遅くなることがあります。そのため、インデックスを適切に設定することが重要です。7.5.1 現在のインデックスを確認 テーブルのインデックス一覧を取得するには、SHOW INDEX を使用します。SHOW INDEX FROM users; 出力例:+-------+------------+----------+--------------+-----------------+-----------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Index_type|
+-------+------------+----------+--------------+-----------------+-----------+
| users | 0 | PRIMARY | 1 | id | BTREE |
| users | 1 | email | 1 | email | BTREE |
+-------+------------+----------+--------------+-----------------+-----------+7.6 データベースの状態を確認 7.6.1 MySQLのバージョンを確認 現在のMySQLのバージョンを確認するには、以下のコマンドを実行します。SELECT VERSION(); 出力例:+-----------+
| VERSION() |
+-----------+
| 8.0.32 |
+-----------+7.6.2 データベースのサイズを確認 各データベースのサイズを確認するには、以下のクエリを実行します。SELECT table_schema AS "Database",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)"
FROM information_schema.tables
GROUP BY table_schema; 出力例:+---------------+-----------+
| Database | Size (MB) |
+---------------+-----------+
| my_database | 45.23 |
| mysql | 2.10 |
+---------------+-----------+7.7 まとめ このセクションでは、MySQLの中級者向けの便利コマンドを紹介しました。
特に重要なのは:データベースのバックアップ・復元(mysqldump, mysql) 実行中のプロセスの確認(SHOW PROCESSLIST) クエリの最適化(EXPLAIN) インデックスの管理(SHOW INDEX) データベースの状態確認(情報スキーマのクエリ)
8. MySQL トラブルシューティング MySQLを使用していると、接続エラーやパフォーマンスの問題など、さまざまなトラブルに直面することがあります。このセクションでは、よくあるMySQLのエラーとその解決策を紹介します。8.1 MySQLに接続できない場合 8.1.1 「Access denied for user」エラー エラー例:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)原因 パスワードが間違っている ユーザーに適切な権限がない MySQL認証方式の問題 解決策 パスワードが正しいか確認 mysql -u root -p現在のユーザー権限を確認 SELECT user, host FROM mysql.user;パスワードをリセット ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;8.1.2 「Can’t connect to MySQL server on ‘localhost’」エラー エラー例:ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)原因 MySQLサーバーが停止している ポートが変更されている ファイアウォールの影響 解決策 MySQLが起動しているか確認 sudo systemctl status mysqlMySQLを再起動 sudo systemctl restart mysql接続ポートを指定 mysql -u root -p --port=3306ファイアウォールをチェック sudo ufw allow 3306/tcp8.2 データベースやテーブルの問題 8.2.1 「Unknown database」エラー エラー例:ERROR 1049 (42000): Unknown database 'my_database'原因 データベースが存在しない データベース名のスペルミス 解決策 データベース一覧を確認 SHOW DATABASES;データベースを作成 CREATE DATABASE my_database;8.2.2 「Table doesn’t exist」エラー エラー例:ERROR 1146 (42S02): Table 'my_database.users' doesn't exist原因 解決策 テーブル一覧を確認 SHOW TABLES;テーブルを作成 CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);8.2.3 「Table is marked as crashed」エラー エラー例:Table 'users' is marked as crashed and should be repaired原因 解決策 テーブルを修復 REPAIR TABLE users;データベース全体をチェック CHECK TABLE users;8.3 パフォーマンスの問題 8.3.1 「Too many connections」エラー エラー例:ERROR 1040 (HY000): Too many connections原因 解決策 現在の接続数を確認 SHOW STATUS LIKE 'Threads_connected';最大接続数を増やす SET GLOBAL max_connections = 200;8.3.2 クエリが遅い 原因 解決策 実行計画を確認 EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';インデックスを作成 CREATE INDEX email_index ON users(email);8.4 まとめ このセクションでは、MySQLで発生しやすいトラブルとその解決策を紹介しました。接続エラー → パスワード・ユーザー権限を確認データベース・テーブルの問題 → SHOW DATABASES / SHOW TABLES で確認パフォーマンスの問題 → EXPLAIN や INDEX を活用
9. 【表付き】MySQL コマンド一覧(保存版) 本セクションでは、これまで紹介したMySQLの主要なコマンドを一覧表 としてまとめます。各カテゴリごとに分けているため、すぐに使いたいコマンドを簡単に見つけることができます。9.1 基本操作コマンド コマンド 説明 SELECT VERSION();MySQLのバージョンを確認 SHOW DATABASES;データベース一覧を表示 SHOW TABLES;現在のデータベース内のテーブルを表示 SELECT DATABASE();現在使用しているデータベースを確認 USE my_database;指定したデータベースを選択 DESC users;テーブルの構造を表示
9.2 データベースの操作 コマンド 説明 CREATE DATABASE my_database;新しいデータベースを作成 DROP DATABASE my_database;データベースを削除 SHOW CREATE DATABASE my_database;データベースの作成SQLを表示
9.3 テーブルの操作 コマンド 説明 CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));テーブルを作成 DROP TABLE users;テーブルを削除 ALTER TABLE users ADD COLUMN email VARCHAR(100);新しいカラムを追加 ALTER TABLE users DROP COLUMN email;指定したカラムを削除 SHOW CREATE TABLE users;テーブルの作成SQLを表示
9.4 データの操作(CRUD) コマンド 説明 INSERT INTO users (name) VALUES ('田中');データを追加 SELECT * FROM users;すべてのデータを取得 SELECT name FROM users WHERE id = 1;条件を指定してデータを取得 UPDATE users SET name = '佐藤' WHERE id = 1;データを更新 DELETE FROM users WHERE id = 1;データを削除 TRUNCATE TABLE users;テーブル内のすべてのデータを削除
9.5 ユーザー管理と権限設定 コマンド 説明 CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';ユーザーを作成 DROP USER 'new_user'@'localhost';ユーザーを削除 GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost';ユーザーに権限を付与 REVOKE INSERT ON my_database.* FROM 'new_user'@'localhost';指定の権限を取り消し SHOW GRANTS FOR 'new_user'@'localhost';ユーザーの権限を確認
9.6 バックアップと復元 コマンド 説明 mysqldump -u root -p my_database > backup.sqlデータベースのバックアップ mysql -u root -p my_database < backup.sqlバックアップから復元
9.7 パフォーマンスと最適化 コマンド 説明 SHOW PROCESSLIST;現在実行中のクエリを表示 SHOW STATUS LIKE 'Threads_connected';現在の接続数を確認 SHOW INDEX FROM users;インデックスの一覧を表示 CREATE INDEX idx_name ON users(name);インデックスを作成 ANALYZE TABLE users;テーブルの統計情報を更新 OPTIMIZE TABLE users;テーブルを最適化
9.8 トラブルシューティング コマンド 説明 SET GLOBAL max_connections = 200;最大接続数を変更 REPAIR TABLE users;クラッシュしたテーブルを修復 FLUSH PRIVILEGES;権限の変更を適用
9.9 まとめ このセクションでは、MySQLの重要なコマンドを一覧表 としてまとめました。特に、データ操作(CRUD)、バックアップ、パフォーマンス管理、トラブルシューティングなど、実践でよく使うコマンドを即座に参照できるように整理 しました。