Blog -備忘録-DB作成&phpMyAdmin導入
投稿日:2025-12-28 /制作工程の話【9】
root で MariaDB に入ってデータベースの作成を進めます。
vagrant ssh で仮想サーバーに入った状態で以下コマンドを打ちます。
unix_socket 認証を使って root ユーザーとして MariaDB にログインするためのコマンドです。
パスワード入力が不要なのは、OSのroot権限と連携した認証方式だからです。
sudo mariadb
DBに入ったらデータベースの作成のSQLを実行します。
作成と同時に文字コードの指定と照合順序の指定もしちゃいます。
CREATE DATABASE データベース名
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
「データベース名」は任意の名前をアルファベットで指定してください。
文字コードは絵文字や拡張文字など4バイト文字も扱える「utf8mb4」にしました。
照合順序に選択した「utf8mb4_unicode_ci」は、アルファベットの大文字・小文字を区別せず、Unicode のルールに基づいた自然な並び順で比較・ソートされる設定です。
ちなみに文の最後に「;」をつけるまでSQLは実行されません。
「;」を忘れてEnter押すと「->」と表示されますが、コマンドの続きを待ってる状態なので「;」だけ入れて実行させましょう。
続いて作成したデータベースにログインするユーザーを作ります。
CREATE USER 'admin'@'localhost'
IDENTIFIED BY 'パスワード';
今回は分かりやすさ重視でユーザー名を「admin」にしましたが、ここは任意です。
実務ではアプリケーション専用のユーザー名を付けることが多いです。
「@'localhost'」は接続元を表しており、同じサーバー内からの接続のみに制限しています。
「IDENTIFIED BY」で、このユーザーのログイン用パスワードを設定します。
作成したユーザーに対して、データベースの操作権限を付与します。
GRANT ALL PRIVILEGES ON データベース名.* TO 'admin'@'localhost';
FLUSH PRIVILEGES;
指定したデータベースに対して、すべての操作ができる権限を admin に付与しました。
ローカルのadminだから全権与えましたけど、本番では必要最低限にしましょうね。
最後の1行は、ユーザー権限に関するキャッシュを再読み込みするコマンドです。最近の MariaDB では自動反映される場合もありますが、変更を確実に有効化するために実行しています。
データベースとユーザーの作成が完了したので
exit で MariaDB を抜けて仮想サーバーから接続テストを行います。
mysql -u admin -p データベース名
上記コマンドを打つと Enter password と表示されるので、設定したパスワードを入力します。
パスワードの文字列は表示されません。最初は戸惑いますが、パスワードの文字列を打ち込んで Enter を押せばいいのです。
無事にログインできれば「MariaDB [データベース名]>」と表示されます。
ちなみにこのコマンドは、「admin というユーザー(-u)で、パスワード認証(-p)を使って、指定したデータベースにログインする」という意味です。
とりあえずこれでローカル環境にMariaDBを設定することができました!
本番環境のバックアップデータ(.sqlファイル)を流し込んだら、ローカル環境でブログページの表示もできるようになった!
……と思ったら「接続エラー:ドライバーが見つかりませんでした」
えっと......?ぁ、PDO MySQL ドライバが無いと。
②でPHPインストールはしましたが、あれはPHP本体をインストールしただけで MySQL(MariaDB)用のPDOドライバは含まれておらず、php-mysql を別途インストールする必要があったそうです。
さて、vagrant ssh の状態で次のコマンドを実行します。
sudo apt-get install -y php-mysql
sudo systemctl restart apache2
インストール完了したら、無事にローカルでも表示できました。
確認や管理をしやすくするために phpMyAdmin の導入もしておきます。
sudo apt-get install -y phpmyadmin
途中、ダイアログが出てきます。
まずWebサーバーの選択。
今回は Apache を使用しているため、phpMyAdmin の設定対象としては apache2 を選択します。
次に出てくるダイアログはデータベースの設定について。
「Configure database for phpmyadmin with dbconfig-common?」
これは「phpMyAdmin 自身が使う管理用DBを自動で作る?」と聞いているのでYesです。
するとパスワードの設定画面になります。
空欄のままEnterを押すとランダムで自動生成されます。
このパスワードは phpMyAdmin が内部で MariaDB に接続するためのもので、設定ファイルに保存されて通常ユーザーが使うことはありません。
なので自動生成でOKです。
そして Apache に phpMyAdmin を認識させます。
今回使用している jammy では自動で有効化されますが、念のためです。
sudo phpenmod mysqli
sudo systemctl restart apache2
「phpenmod」はPHP拡張モジュールを有効化するためのコマンドです。
phpMyAdmin は内部で mysqli 拡張を利用して DB に接続するので mysqli を有効化してます。
これで original-domain.local/phpmyadmin で表示されるはず!
と、思ったら404エラーでした。
えっとですね……Apache が /phpmyadmin のURLと実体ディレクトリを結びつける設定を読み込んでなかったことが原因でした。
「/phpmyadmin に来たら /usr/share/phpmyadmin を見せてね」というApache向け指示書が必要です。
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
「ln -s」ファイルの実体をコピーするのではなく、別の場所から参照できる「シンボリックリンク」を作るコマンドです。
そして「sudo a2enconf phpmyadmin」で設定ファイルを有効化。
無事に http://original-domain.local/phpmyadmin で表示ができました。
これで Apache + PHP + MariaDB + phpMyAdmin のローカル検証環境が一通り完成です!
制作工程の話