NginxでphpMyAdminを使用する [CentOS]
CentOSにphpMyAdminをインストールしてNginx + PHPで動作させます。SSL(HTTPS)による暗号化の対応やIPアドレスによるIP制限も行います。

前提条件
NginxでPHP7(PHP-FPM)を動作させる |
Let’s EncryptでサイトをSSL(https)にする |
1. インストール
sudo yum install --enablerepo=remi,remi-php73 phpMyAdmin
2. /var/lib/php/sessionの権限の変更
// /var/lib/php/sessionの権限の確認 ls /var/lib/php -l // 結果 drwxrwx--- 2 root apache 4096 Aug 28 19:01 opcache drwxrwx--- 2 root apache 4096 Aug 28 19:01 session drwxrwx--- 2 root apache 4096 Aug 28 19:01 wsdlcache // /var/lib/php/sessionの権限の変更 sudo chown -R root.ユーザー名 /var/lib/php/session ※ユーザー名はNginxのnginx.confファイル先頭にあるuser名と同じにする
3. PHP.iniの編集
sudo vi /etc/php.ini // 次の行を変更します。 // phpMyAdminが利用するセッションを保存するディレクトリです。 session.save_path = "/var/lib/php/session" // PHP-FPMの再起動 sudo systemctl restart php-fpm
4. /etc/nginx/conf.d/*.confの編集
IP制限を行わない場合はセキュリティ対策で「phpMyAdmin」の部分を「dIeldiwk34Mdg3dehrtl」のように意味不明で長い文字のディレクトリを設定してください。
location /phpMyAdmin { root /usr/share/; index index.php index.html index.htm; # IP制限 --- allow アクセスを許可するIPアドレス; deny all; # ---------- location ~ ^/phpMyAdmin/(.+\.php)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* ^/phpMyAdmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } }
*.confで既にHTTPSに対応していれば、そのまま通信が暗号化されます。
次のような設定を行うと、phpMyAdminのログイン/ログアウト後にwww.example.com/phpMyAdmin/からwww.example.com/index.php?db=mysql&target=db_structure.phpにURLが暗黙的に変更されて「404」のエラーが表示されますのでご注意ください。
// ダメな例です。 location /phpMyAdmin { alias /usr/share/phpMyAdmin; index index.php; location ~ ^/phpMyAdmin.+\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^/phpMyAdmin(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$fastcgi_script_name; include fastcgi_params; } }
5. Nginxのリスタート
再起動後、www.example.com/phpMyAdmin/でアクセス可能です。
sudo systemctl restart nginx
6. ユーザーとデータベースを作成する
利便性からユーザー名とデータベース名は同一にすると良いです。 ※1人のユーザーは1つのデータベースのみを推奨。
// rootでログインする mysql -u root -p // データベースの作成 CREATE DATABASE データベース名; // ユーザーを作成する CREATE USER 'ユーザー名' IDENTIFIED BY 'パスワード'; // ユーザーにデータベースの全ての権限を付与する GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'; // --- 関連するコマンド // データベースの一覧 SHOW DATABASES; // ユーザーの一覧を表示する SELECT host, user, password FROM mysql.user; // ユーザーの削除 DROP USER ユーザー名; // データベースの削除 DROP DATABASE データベース名;
7. ファイルのインポート
データベースのバックアップの「大きなファイル」をインポートする際はPHP.iniの次の項目を大きくします。次の例では全て32Mなので、最大32MBまでアップロードしてインポート可能となります。
memory_limit = 32M post_max_size = 32M upload_max_filesize = 32M
関連記事
この記事を書いた人
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
プチモンテ代表、アーティスト名:プチモンテ | |
🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~ |
オリジナル曲を始めました✨
YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte