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

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

※₁ 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

MySQLのインストール

wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
sudo apt update

MySQLのインストール

sudo apt -y install mysql-server

MySQLの自動起動

sudo systemctl enable mysql --now

MySQLのバージョン確認確認

2025年6月
mysql Ver 8.0.42-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu))と表示されました。

mysql --version

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

sudo mysql_secure_installation

質問1

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:

ユーザーのパスワード設定時に「強度チェック」を行います。
本番環境ではY
開発環境ならNでいいです。

質問1.2

Yの場合
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

2でいいです。

質問2.Remove anonymous users? (Press y|Y for Yes, any other key for No) :

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

質問3.Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

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

質問4.Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

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

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

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

質問6.Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

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

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

vi /etc/mysql/mysql.conf.d/mysqld.cnf

以下の設定を探す

bind-address = 127.0.0.1

以下のように変更する

bind-address = 0.0.0.0

MySQLの再起動をする

sudo systemctl restart mysql

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

パスワードを求められた場合は設定していない場合はEnterでいいです。

sudo mysql -u root

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

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

パスワードチェックでStrongにしてたので少し厳しいです。
ユーザー名[user1]とパスワード[Your_strong_password123]は自由に変更してください。

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

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

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

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

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

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

CREATE USER 'user1'@'接続元IP' IDENTIFIED BY 'Your_strong_password123';
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
sudo chown www-data:www-data -R /var/lib/phpmyadmin/tmp/

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 start nginxを今回実行せずに起動されます

 systemctl enable nginx --now

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

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

別に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を置き換えてください。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Your_root_password123';
FLUSH PRIVILEGES;
exit;