ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
基本: mysql コマンドの最小構成
MySQL に接続するための CLI クライアントが mysql(または互換の mariadb)です。最も基本の形は次の通り:
# ローカルホストの root で接続(パスワード対話入力)
mysql -u root -p
# 既定 DB を指定して接続(=ログイン直後に USE dbname される)
mysql -u root -p -D myapp
# ホスト・ポートを指定(リモート DB)
mysql -h db.example.com -P 3306 -u app_user -p myapp
パスワードは -p の直後に空白なしで書くと引数として渡せますが、ps コマンドや bash history から見えてしまうのでまず使いません:
# ❌ 危険: 他ユーザーが ps で見える
mysql -u root -pSecret123 myapp
# ✅ 推奨: 対話入力(履歴に残らない)
mysql -u root -p myapp
主要オプション一覧
| オプション | 意味 | 例 |
|---|---|---|
-u USER / --user | ユーザー名 | -u root |
-p / --password | パスワード(対話入力 or 引数) | -p |
-h HOST / --host | 接続先ホスト | -h db.example.com |
-P PORT / --port | ポート番号(既定 3306) | -P 3307 |
-D DB / --database | 既定 DB | -D myapp |
-e SQL / --execute | SQL を実行して即終了 | -e "SELECT NOW()" |
--protocol=TCP | UNIX ソケットを使わず TCP 強制 | ローカルでも TCP で繋ぐ |
--ssl-mode=REQUIRED | TLS 必須 | リモート接続で推奨 |
--default-character-set | クライアント側文字コード | --default-character-set=utf8mb4 |
-S /path/to/sock | UNIX ソケットパス | -S /var/run/mysqld/mysqld.sock |
-v / -vv / -vvv | verbose(実行結果詳細) | スクリプト実行の確認に |
--batch / -B | タブ区切り出力(パイプ向き) | シェル連携 |
SQL ファイルを流し込む(リダイレクト)
初期化スクリプトやマイグレーションをシェルリダイレクトで流し込むのが基本パターンです:
# init.sql を myapp DB に流し込む
mysql -u root -p myapp < init.sql
# 結果を別ファイルに書き出す
mysql -u root -p myapp < query.sql > result.txt
# 1 行ずつ実行内容を表示しながら(デバッグ用)
mysql -u root -p -v myapp < migrations.sql
# ダンプファイル復元
mysql -u root -p myapp < dump.sql
gunzip < dump.sql.gz | mysql -u root -p myapp
ワンライナー: -e で SQL を直接実行
シェルスクリプトやワンライナー用途では -e オプションが便利:
# テーブル一覧
mysql -u root -p -e "SHOW TABLES" myapp
# 件数取得 → 変数に格納
COUNT=$(mysql -u root -p -N -B -e "SELECT COUNT(*) FROM users" myapp)
echo "ユーザー数: $COUNT"
# -N: ヘッダー行を出さない
# -B / --batch: タブ区切り出力(カラム揃え用記号を除去)
# これらを併用すると shell で扱いやすい純粋なテキストになる
# 複数 SQL をセミコロン区切り
mysql -u root -p -e "SHOW DATABASES; SELECT VERSION();"
# ヒアドキュメントで複数行
mysql -u root -p myapp <= CURDATE();
EOF
~/.my.cnf でパスワードを安全に保存
cron / バッチでパスワード入力を省略したい場合、ホームディレクトリの ~/.my.cnfに書きます。パーミッションは必ず 600に:
cat > ~/.my.cnf < backup.sql
セクション [client] は mysql / mysqldump / mysqladmin など共通設定。chmod 600 を忘れると MySQL 自身が「unsecure」と警告を出します。
SSL / TLS で接続する
リモート DB 接続では平文を避け TLS を必須にします:
# TLS 必須(証明書検証なし)
mysql -h db.example.com -u app -p --ssl-mode=REQUIRED
# サーバー証明書を CA で検証
mysql -h db.example.com -u app -p \
--ssl-mode=VERIFY_CA \
--ssl-ca=/etc/mysql/ca-cert.pem
# サーバー証明書の CN/SAN も検証
mysql -h db.example.com -u app -p \
--ssl-mode=VERIFY_IDENTITY \
--ssl-ca=/etc/mysql/ca-cert.pem
# 接続が TLS かを確認
mysql -e "SHOW STATUS LIKE 'Ssl_cipher'"
# Ssl_cipher | TLS_AES_256_GCM_SHA384 のように出れば TLS
--ssl-mode | 動作 |
|---|---|
DISABLED | TLS を使わない(平文) |
PREFERRED | 可能なら TLS、無理なら平文(既定値・脆弱) |
REQUIRED | TLS 必須。証明書検証はしない |
VERIFY_CA | TLS + CA 検証 |
VERIFY_IDENTITY | TLS + CA 検証 + ホスト名検証(最も厳密) |
mysqladmin: 管理用コマンド
SQL を流すのではなく、サーバー自体を操作する管理コマンドが mysqladmin:
# サーバーが生きているか
mysqladmin -u root -p ping
# → mysqld is alive
# 統計情報
mysqladmin -u root -p status
mysqladmin -u root -p extended-status
# 接続中スレッド一覧(= SHOW PROCESSLIST)
mysqladmin -u root -p processlist
# パスワード変更
mysqladmin -u root -p password 'NewSecret123'
# ホストブロック解除(後述)
mysqladmin -u root -p flush-hosts
# 安全にシャットダウン
mysqladmin -u root -p shutdown
UNIX ソケット vs TCP
ローカル接続では既定で UNIX ソケット(/var/run/mysqld/mysqld.sock 等)が使われ、TCP より高速です。明示的に TCP を強制したい場合:
# ソケット指定(明示)
mysql -u root -p -S /var/run/mysqld/mysqld.sock
# TCP 強制(ループバック 127.0.0.1)
mysql -u root -p -h 127.0.0.1 -P 3306
# ↑ -h localhost だと自動的にソケット、127.0.0.1 だと TCP
# プロトコル明示
mysql -u root -p --protocol=TCP -h localhost
mysql -u root -p --protocol=SOCKET
接続できないときのトラブルシューティング
| 症状 | 原因 | 対処 |
|---|---|---|
ERROR 2002 (HY000): Can't connect to local MySQL server through socket | サーバー停止 / ソケットパス違い | systemctl status mysql、-S でパス指定 |
ERROR 1045 (28000): Access denied for user | ユーザー名/パスワード/ホスト権限 | 権限テーブル確認、'user'@'host' のホスト部一致 |
ERROR 2003 (HY000): Can't connect to MySQL server | ポート閉鎖 / bind-address | サーバーの bind-address=0.0.0.0、FW 開放 |
ERROR 1130 (HY000): Host '...' is not allowed | 該当 IP に権限付与なし | CREATE USER 'user'@'%' ... + GRANT |
Unknown database 'foo' | DB 名タイポ | SHOW DATABASES |
FAQ
Q: パスワードに記号が含まれていて引数で渡しにくい
A: ~/.my.cnf に記述するのが最も安全。引数渡しが必要なら-p"Pass!@#"のようにシェルでクォート。
Q: スクリプトから接続テストしたい
A: mysqladmin -u root -p ping または mysql -e "SELECT 1" の終了コードで判定。
Q: 文字化けする
A: クライアントは --default-character-set=utf8mb4、サーバーは character-set-server=utf8mb4、テーブルも utf8mb4 で統一。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?