この記事でできること
空のデータベースとユーザーを作り、PHP接続に必要な4情報(ホスト・DB名・ユーザー・パスワード)を揃えるところまで進めます。確認用の posts テーブル作成と疎通確認まで含みます。用語の整理はMySQLとは、接続実装はPHPとMySQL接続で扱います。
所要時間の目安は20〜40分です。DB作成自体は10分程度で終わりますが、正式名の控えと権限付与、テスト行の確認まで行うと失敗が減ります。私たちはMySQL公式ドキュメントとPHP公式マニュアル(php.net)を参考にまとめました。
必要なもの・前提条件
| 必要なもの | 具体例・設定値 | 備考 |
|---|---|---|
| サーバーアカウント | FreeHostBoxのアカウント | 管理画面にログインできる状態にする |
| 強固なパスワード | 16文字以上のランダム文字列 | 生成機能があれば利用し、安全に保管する |
| 控え用メモ | ホスト名・DB名・ユーザー名 | 正式名をコピー&ペーストで控える |
| テキストエディタ | UTF-8(BOMなし)保存 | SQL実行時の文字化け防止に重要 |
| ブラウザとHTTPS | 無料SSL有効化後の確認 | PHP確認時にhttpsで開く |
私たちはMySQL 8 / MariaDB 11.4、無料SSL、FTP・オンラインファイルマネージャー、Softaculous 400+アプリ・5GB NVMeストレージ・転送無制限・VistaPanel・Cron・phpMyAdminをご用意しています。ぜひ無料プランでお試しください。DB個数や上限はプランで変わるため、料金ページと管理画面の表示で確認してください。
4情報の役割は下表の通りです。1つでも欠けると接続できません。
| 情報 | 例 | 役割 |
|---|---|---|
| ホスト名 | localhost(環境の表示値を使う) | DBサーバーの場所 |
| DB名 | example_db(正式名をコピー) | 接続先の倉庫名 |
| ユーザー名 | example_user(正式名をコピー) | 倉庫に入る鍵の名義 |
| パスワード | 生成した強固な文字列 | 鍵本体。共有・公開厳禁 |
詳細手順:DB作成から疎通確認までの7歩
手順1:管理画面にログインする アカウント情報で管理画面(一般例としてコントロールパネルの表示)を開きます。ログイン後にデータベース関連の項目を探します。管理画面の表示に従って進めてください。
手順2:「MySQLデータベース」等の項目を開く データベース管理の項目を開き、既存DB一覧の表示を確認します。既に上限に達している場合は不要DBの整理またはプラン確認が必要です。WordPress自動設置を使う場合は、WordPress始め方記事の案内も先に確認してください。Softaculousをご用意していますので、手動作成不要の場合があります。ぜひ無料プランでお試しください。
手順3:新しいDBを作成し正式名をメモする
任意名(例:blog)を入力して作成します。環境によってはアカウント名の接頭辞が自動付与され、正式名が account_blog のようになります。表示された正式名(例:example_db)をコピーして控えます。推測で短縮せず、表示値をそのまま使います。
手順4:新しいDBユーザーを作成しパスワードを保管する
任意のユーザー名(例:bloguser)と強固なパスワードを設定します。正式名(例:example_user)を控え、パスワードはパスワード管理ツールやオフラインの安全な場所に保管します。チャットやメールでの平文共有は避けます。
手順5:ユーザーをDBへ追加し権限を付与する 作成したユーザーを作成したDBへ紐付け、必要な権限を付与します。一般例として一覧表示・投稿用途では SELECT、INSERT、UPDATE、DELETE を含む基本権限が必要です。管理系の強い権限は不要に付けず、用途に絞ります。紐付け漏れは接続拒否の典型原因です。
手順6:ホスト名を控える
ホスト名の表示値(一般例:localhost)を確認して控えます。環境により異なるため決め打ちせず、管理画面の表示に従って進めてください。4情報が揃った時点で、PHPとMySQL接続記事の db.php に転記できる状態になります。
手順7:確認用テーブルとテスト行を作り疎通確認する
次章のSQL全文で posts テーブルを作成し、2件のテスト行を入れて SELECT で確認します。ここまでできたらDB側の準備は完了です。PHP側の表示確認は list.php で行います(PHPの動かし方記事の表示確認の応用です)。
SQL全文:posts作成と確認
DB作成後に実行する確認用SQLです。管理画面のDB操作項目(一般例としてphpMyAdmin等のSQL実行欄の表示)で、対象DB(例:example_db)を選んで実行します。文字セットは utf8mb4に統一します。
-- 対象DBで実行する。文字セットはutf8mb4に統一
CREATE TABLE IF NOT EXISTS posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
body TEXT,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 確認用テスト行を2件登録
INSERT INTO posts (title, body) VALUES
('初投稿', 'DB作成後の確認用1行目です'),
('二回目の投稿', 'DB作成後の確認用2行目です');
-- 登録内容の確認:一覧の取り出し
SELECT id, title, created_at FROM posts ORDER BY id DESC LIMIT 10;
実行後に2行が返れば成功です。テーブル一覧に posts が見えない場合は、対象DBの選択間違いや作成未完了が原因です。SHOW TABLES; で一覧確認し、SHOW CREATE TABLE posts; で文字セットが utf8mb4 であることを確認します。
PHP側の接続ファイル(db.php)への転記例も示します。4情報の置き場所は1か所にまとめます。
<?php
// db.php:4情報を1か所にまとめる。HTMLは書かない
$host = 'localhost'; // 管理画面の表示値をコピー
$db = 'example_db'; // 作成後に表示された正式名
$user = 'example_user';
$pass = 'STRONG_PASSWORD_HERE'; // 実際の値に置き換える。共有・公開厳禁
$pdo = new PDO(
"mysql:host={$host};dbname={$db};charset=utf8mb4",
$user,
$pass,
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
警告:パスワード等の秘密情報をソースコードへ直書きしたまま、公開リポジトリへpushしたり、権限の緩い共有で配布したりしないでください。この例の
'STRONG_PASSWORD_HERE'は仮値です。実運用では接続ファイルの公開範囲と権限を確認し、管理画面の安全な保管手段や環境変数の利用を検討します。パスワード再設定後はdb.php側の値も更新します。
よくある失敗と解決:6症状の切り分け表
作成直後の失敗は正式名・紐付け・権限の3点に集中します。コードを疑う前に下表の上から確認します。
| 症状 | 原因候補 | 対処 |
|---|---|---|
| 一覧にDBが出ない | 作成未完了・表示切替・選択DB違い | 再読み込みし、正式名で検索し、対象DBの選択を見直す |
| 接続拒否(Access denied) | ユーザー紐付け漏れ・権限不足 | ユーザーをDBへ追加し、基本権限を付与し直す |
| パスワード不一致 | コピペミス・再生成後の転記忘れ | パスワードを再設定し、db.php の値も同時に更新する |
| Unknown database | DB名の綴り間違い・接頭辞落とし | 作成後の正式名をコピーし直し、短縮せずそのまま使う |
| 上限エラーで作成できない | プラン上限・不要DB残存 | 不要DBを整理するか、料金・機能ページと案内表示で上限確認する |
| テーブルがないと言われる | 対象DB違い・テーブル未作成 | 接続先DB名と SHOW TABLES; を確認し、正しいDBでCREATE TABLEする |
補足として、ホスト名の決め打ちは失敗の元です。localhost で動く環境が多いものの、環境により異なるため管理画面の表示に従って進めてください。文字化けが出る場合は、テーブル utf8mb4、接続 charset=utf8mb4、PHP保存UTF-8、HTMLの meta charset の4点を統一します。PHP側の切り分けはPHPとMySQL接続記事のエラー表も参照してください。
完了チェックリストと接続確認
- DBが作成され、接頭辞込みの正式名(例:
example_db)を控えた - DBユーザーが作成され、正式名(例:
example_user)とパスワードを安全に保管した - ユーザーがDBへ追加され、必要な権限が付与されている
- ホスト名の表示値を控えた(決め打ちしていない)
-
postsテーブルがutf8mb4で作成され、テスト2行がSELECTで返る - 4情報が
db.phpに転記され、list.phpで一覧表示できる - パスワードを共有・公開場所に置いていない
- 管理画面の表示と公式ドキュメントで最新仕様を確認した
接続確認の手順は2段階です。SQL実行欄で SELECT が返ることを確認し、次に list.php を https://あなたのURL/list.php で開いて同じ2行が表示されることを確認します。表示されない場合はチェックリストの上から見直し、複数箇所を同時に変えないのがコツです。表示確認の基礎はPHPの動かし方記事、用語の復習はMySQL解説記事で行えます。確認結果は成功したSQL文と返却件数、表示URLとともに記録します。記録があれば再発時の比較が容易で、パスワード変更や権限変更の影響範囲も特定できます。一覧表示側ではDBの値をそのまま出さず htmlspecialchars で無害化し、PDOのプレースホルダで取得した結果を安全に表示します。
補足:パスワード保管と権限・退避の実務
パスワードは16文字以上のランダム文字列を生成し、パスワード管理ツールに保管します。管理画面に生成機能がある場合はそちらを使い、目視で作った短い単語や使い回しは避けます。控えメモにはパスワードそのものではなく「管理ツールの項目名」を書き、平文の付箋やチャット共有を避けます。パスワードを再設定したら、接続ファイル db.php の値も同時に更新し、旧パスワードが残っていないか確認します。複数人で運用する場合は、誰がいつ変更したかを共有メモに残します。
権限付与は用途に絞ります。一覧表示と投稿が主用途なら、対象DBへの SELECT、INSERT、UPDATE、DELETE を含む基本権限で足ります。構造変更(ALTER、DROP)や他DBへの権限は、必要になるまで付けません。WordPress自動設置を使う場合は、設置ツール側の案内に従い、手動での権限追加が要るかを確認します。不要になったテスト用DBや旧ユーザーは残さず削除し、残す場合は用途と削除予定日をメモします。上限エラーが出た場合は、不要DBの整理を先に行い、プランの上限表示と見比べます。
削除系の操作前は退避します。DROP DATABASE や無条件 DELETE は取り消せません。管理画面のエクスポート機能で対象DBを退避し、ファイル名に日付(例:example_db-20260909.sql)を付けて保管します。テーブル削除前は SHOW TABLES; と SELECT COUNT(*) で対象を確認し、別DBを触っていないか画面上部のDB名表示で再確認します。実行後は posts の一覧表示で影響範囲を確認します。確認完了後はエクスポートファイルを保管場所へ移し、作業メモへ完了日時を追記します。次回作業者が迷わないよう正式名の読み方も添えます。
注意点・セキュリティ
- 正式名のコピーを使う:DB名・ユーザー名は表示値をそのまま使います。推測の短縮や大文字小文字の変更はエラーの原因です。
- 権限は必要最小限にする:用途に絞って付与し、不要な管理権限を付けません。管理画面の表示に従って進めてください。
- パスワードを使い回さない:DB用に生成した強固な文字列を使い、他サービスと共有しません。再設定後は接続ファイルも更新します。
- 本番のエラー詳細表示は避ける:接続失敗文の詳細は画面に出さず、ログで確認します。
- バックアップと削除に注意する:
DROP DATABASEやDELETE無条件実行は取り消せません。実行前にSELECT ... WHEREで対象確認し、必要に応じてエクスポート退避します。 - 画面名称は目安として読む:メニュー名やフォルダ名は管理画面の表示に従って進めてください。
- 作業メモを残す:作成したDB正式名・ユーザー正式名・ホスト名・作成日・用途を1か所にまとめます。テスト用と本番用のDBを分け、削除予定日も書きます。複数DBがある場合は接頭辞込みの正式名で区別し、推測の略称を使いません。権限変更やパスワード再設定の履歴も追記すると、接続不良時の切り分けが早くなります。管理画面の表示変更に備えて記録日も残します。
次に読む記事
- PHPとMySQL接続 — 4情報を使って一覧表示する実装手順
- MySQLとは — テーブル・SQL・文字コードの用語整理
- PHPの動かし方 —
hello.php表示とエラー切り分けの復習 - WordPress始め方 — 自動設置を使う場合のDB扱いの違い
- サイトの作り方 — 公開までの全体工程の確認
出典・参考資料
- MySQL公式ドキュメント:CREATE TABLE・権限・文字セット(
utf8mb4)の仕様 - PHP公式マニュアル(php.net):PDOの接続と例外処理の仕様
- 無料プランの内容は料金ページをご覧ください。分からなければ私たちがサポートします。まずは無料プランで実際に触って確かめてみてください。
よくある質問
DB名とユーザー名は同じで良い?
環境の命名規則に従います。接頭辞が付く場合があるため、作成後に表示された正式名をコピーして使います。推測で短縮せず、表示名をそのまま控えるのが確実です。
権限とは?
そのユーザーがそのDBへ何をして良いかの許可です。作成時にDBへ紐付けて権限を付与します。用途に絞った最小権限が基本です。
ホスト名は?
多くはlocalhostですが環境により異なります。管理画面の表示に従って進めてください。決め打ちせず、表示値をコピーします。
テーブルはこの記事で作るの?
DBとユーザーの作成が主範囲で、テーブルは確認用のpostsを最小構成で作ります。本格的な設計やPHP連携は別記事で拡張します。
WordPressを使う場合も手動作成は必要?
自動設置(Softaculous等の案内がある場合)は手動作成不要の場合があります。FreeHostBoxではSoftaculousをご用意していますので、ぜひ無料プランでお試しください。管理画面の表示に従って進めてください。
作成後に接続できないときは?
4情報の綴り、ユーザー紐付け、権限付与の順に確認します。パスワード再設定後はPHP側の接続ファイルも更新します。
DBを作ってPHPとつなげる
DB作成からPHP接続まで通して試すと一気に理解が進みます。