メインコンテンツまでスキップ

phpMyAdminをインストールする(MariaDB)

※₁ Exmnetでの接続テストを実施しました。
※₂ Ubuntuのversionは24 lts版です。
※₃ 後でSSLとドメイン設定をするので問題がでたら更新します。

Ubuntuを更新する

メモ

sudo apt -y update
sudo apt -y upgrade

ポートを開放する(必要がある場合)

sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 3306
sudo ufw reload

MariaDBのインストール

sudo apt -y install mariadb-server mariadb-client

MariaDBの自動起動

sudo systemctl enable mariadb --now

MariaDBのバージョン確認

2025年6月
mysql Ver 15.1 Distrib 10.11.13-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapperと表示されました。

mysql --version

初期設定(rootパスワード設定、リモートアクセス許可など)

sudo mysql_secure_installation

質問1.Enter current password for root (enter for none):

初回はパスワードを設定していないため Enterキーでスキップ

質問2.Switch to unix_socket authentication [Y/n]

Yにしておけばrootユーザーでログインしている場合のみ、MySQLのrootとして自動ログインできるようになります。
sudo mysqlやsudo mysql -u rootでパスワードなしでMySQLに入れるようになります。
これは使い分けですかね?
まぁ皆rootでも・・・
サーバー管理者が一人だけならYでいいです。
他の人にもrootアクセスをパスワードで許可したい場合はnです。

質問3.Change the root password?

今回rootは使わないのでnでいいです。

質問4.Remove anonymous users? [Y/n]

Y推奨です。 匿名ユーザー(ユーザー名がないMySQLアカウント)を削除しますか?という意味です。
匿名ユーザーはセキュリティリスクになるため、通常は削除します。

質問5.Disallow root login remotely? [Y/n]

MySQLのrootユーザーでリモートからのログインを禁止しますか?
基本的には「Y」です。 リモートからは一般ユーザーで接続するのが安全です。

質問6.Remove test database and access to it? [Y/n]

基本はYでいいです。
testデータベースとそのアクセス権を削除しますか?という意味です。いらないです

質問7.Reload privilege tables now? [Y/n]

基本はYです。
今すぐ権限テーブルを再読み込みしますか?という意味です。

外部からアクセスできるようにする

vi /etc/mysql/mariadb.conf.d/50-server.cnf

以下の設定を探す

bind-address = 127.0.0.1

以下のように変更する

bind-address = 0.0.0.0

MariaDBを再起動する

sudo systemctl restart mariadb

データベースの外部接続を許可する

sudo mysql -u root

phpMyAdminにログインできるユーザーを作成する

※phpMyAdminへログインする場合は今回の場合は'@'localhost'が必要となります。
dbサーバーとphpMyAdminのサーバーを分ける場合等は設定を変更してください。

ユーザー名[user1]とパスワード[your_strong_password]は自由に変更してください。

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'your_strong_password';
FLUSH PRIVILEGES;

これでuser1としてphpMyAdminにログインできるようになっています。
次にやり方は色々ありますが今回は以下とします。

ユーザーを作成してDBへ接続可能なIPを限定する

※Exmentからの接続をテストしました。
※一応、必要な権限だけを与えることを推奨。(ALL PRIVILEGESではなく、必要な権限 SELECT, INSERT等)

今回はphpMyAdmin側でdatabase1というデータベースを作成している設定とします。

特定のIPアドレス(サーバー)等からdatabase1というデータベースへの接続を許可する設定です。
接続元IPとyour_strong_passwordを置き換えてください。
今回の場合はphpMyAdminにログインするように作成したuser1'@'localhost'user1'@'接続元IP'は別ユーザー扱いとなります。
パスワードは別々に保存してください。

CREATE USER 'user1'@'接続元IP' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON database1.* TO 'user1'@'接続元IP';
FLUSH PRIVILEGES;

php8.3とphpMyAdminをインストールする

sudo apt install -y php8.3 php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip
sudo systemctl enable php8.3-fpm --now
sudo apt -y install phpmyadmin
mkdir /var/www
sudo ln -s  /usr/share/phpmyadmin /var/www/phpmyadmin
sudo chmod 775 -R /usr/share/phpmyadmin
sudo chown www-data:www-data -R /usr/share/phpmyadmin

Nginxの最新版をインストールする

最新のNginx取得に必要なものをインストール

sudo apt -y install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

nginx の署名鍵をインポート

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

署名確認(面倒なら不要)

gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

最新の安定板を取得する

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

インストール

sudo apt update

sudo apt -y install nginx

nginx のバージョン確認

2025年6月
nginx version: nginx/1.28.0と表示されました。

nginx -v

Nginx の自動起動設定

以下のコマンドで再起動しても自動起動と初回起動がされます。

 systemctl enable nginx --now

Nginxでphpmyadminにアクセスできるようにする

nginxの権限をwww-dataへ変更する

cd /etc/nginx
vi nginx.conf

user nginx;を以下に user www-data;

cd /etc/nginx/conf.d

今回はデフォルトファイルをいじります。

vi default.conf
server {
listen 80;
server_name localhost;

root /var/www/phpmyadmin;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}

location ~ /\.ht {
deny all;
}
}

nginxをリロードする

sudo systemctl reload nginx

URLへ接続する

http://あなたのIPアドレス に接続することでphpmyadminが表示されるはずです。

その他

pypMyAdmin用のrootパスワードを設定する(不要)

テスト用に使用していました。(テスト環境用)

sudo mysql -u root

your_root_passwordを置き換えてください。

USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('your_root_password');
FLUSH PRIVILEGES;
EXIT;