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等)
特定の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;