このチュートリアルでは、Ubuntu 20.04にNginx、MariaDB、PHP7.4(LEMP)を使用してphpMyAdminをインストールする方法を紹介します。 phpMyAdminは、PHPで記述された無料のオープンソースのWebベースのデータベース管理ツールです。ユーザーがMySQLまたはMariaDBデータベースを管理するためのグラフィカルなWebインターフェイスを提供します。
phpMyAdminを使用すると、管理者は次のことができます。
- データベースとテーブルを参照します。
- データベースの作成、コピー、名前変更、変更、および削除;
- テーブルの作成、コピー、名前の変更、変更、削除;
- テーブルのメンテナンスを実行します。
- フィールドの追加、編集、削除;
- 複数のクエリであっても、SQLステートメントを実行します。
- インデックスの作成、変更、削除;
- テキストファイルをテーブルにロードします;
- テーブルまたはデータベースのダンプを作成して読み取ります。
- データをSQL、CSV、XML、Word、Excel、PDF、LaTeX形式にエクスポートします。
- 複数のサーバーを管理します。
- MySQLユーザーと権限を管理します;
- 構成のヒントを使用してサーバー設定とランタイム情報を確認します。
- MyISAMテーブルの参照整合性を確認します;
- 例によるクエリ(QBE)を使用して複雑なクエリを自動的に作成します
- 必要なテーブルを接続する;
- データベースレイアウトのPDFグラフィックを作成します;
- データベースまたはそのサブセットをグローバルに検索します。
- BLOBデータを画像やダウンロードリンクとして表示するなど、事前定義された一連の機能を使用して、保存されたデータを任意の形式に変換します。
- InnoDBテーブルと外部キーを管理します;
前提条件
このチュートリアルに従うには、Ubuntu20.04OSをローカルコンピューターまたはリモートサーバーで実行する必要があります。
VPS(仮想プライベートサーバー)をお探しの場合は、この特別なリンクをクリックして、DigitalOceanで100ドルの無料クレジットを取得できます。 (新規ユーザーのみ)。すでにDigitalOceanユーザーである場合は、この特別なリンクをクリックして、Vultrで$ 50の無料クレジットを取得できます(新規ユーザーのみ)。
Ubuntu20.04にLEMPスタックがすでにインストールされていることを前提としています。そうでない場合は、次のチュートリアルを確認してください。
- Ubuntu 20.04にLEMPスタック(Nginx、MariaDB、PHP7.4)をインストールする方法
それが邪魔にならないように、phpMyAdminのインストールを始めましょう。
ステップ1:Ubuntu20.04にphpMyAdminをダウンロードしてインストールする
phpMyAdminはUbuntu20.04ソフトウェアリポジトリに含まれているため、次のコマンドで簡単にインストールできます。
sudo apt update sudo apt install phpmyadmin
上記のコマンドは、PHP7拡張機能を含むすべての必要な依存関係をインストールします。インストール中に、dbconfig-common
を使用するかどうかを尋ねられます データベースを構成します。 Tabキーを押して[はい]を選択します。
これにより、phpmyadmin
という名前の新しいデータベースユーザーも作成されます 。このユーザーにパスワードを与えます。
次に、構成するWebサーバーを選択するように求められます。 Nginxはリストにないため、Tabキーを押し、[OK]を押してこの手順をスキップします。
完了すると、phpmyadmin
という名前の新しいデータベースが作成されます が作成され、データベースユーザーphpmyadmin
このデータベースを管理するために必要な権限があります。私のように興味があれば、MariaDBにログインして、phpmyadmin
の権限を確認できます。 ユーザーが許可されました。
次のコマンドを使用して、MariaDBサーバーにログインできます。
sudo mysql -u root
次に、権限を確認します。
show grants for [email protected];
出力:
ご覧のとおり、ユーザーphpmyadmin
データベースphpmyadmin
に対するすべての権限を持っています 。これで、次を実行して終了できます:
exit;
ステップ2:phpMyAdmin用のNginxサーバーブロックを作成する
phpMyAdmin Webインターフェイスにアクセスできるようにするには、次のコマンドを実行してNginxサーバーブロックを作成する必要があります。
sudo nano /etc/nginx/conf.d/phpmyadmin.conf
サブドメインを介してphpMyAdminにアクセスできるように構成します。次のテキストをファイルに貼り付けます。 pma.example.com
を置き換えます 実際のサブドメインを使用して、DNSAレコードを作成することを忘れないでください。
server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/phpmyadmin/; index index.php index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/phpmyadmin_access.log; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(doc|sql|setup)/ { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }
phpMyAdminファイルは/usr/share/phpmyadmin/
にあります ディレクトリ。ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
これで、
を介してphpMyAdminWebインターフェイスにアクセスできるようになります。pma.example.com
ステップ3:TLS証明書のインストール
phpMyadmin Webインターフェースを保護するために、無料のLet’sEncryptTLS証明書をインストールできます。以下のように、Ubuntu 20.04ソフトウェアリポジトリからLet’sEncryptクライアントをインストールします。
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
Certbot用のNginxプラグインです。次のコマンドを実行して、TLS証明書を取得してインストールします。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d pma.example.com --email [email protected]
場所:
- –nginx :Nginxオーセンティケーターとインストーラーを使用する
- –同意する :Let'sEncryptの利用規約に同意する
- –リダイレクト :301リダイレクトでHTTPSを適用します。
- –hsts :すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。
- –staple-ocsp :OCSPステープリングを有効にします。
- –ステープルで留める必要があります :OCSPMustStaple拡張機能を証明書に追加します。
- -d フラグの後には、コンマで区切られたドメイン名のリストが続きます。最大100個のドメイン名を追加できます。
- –メール :登録と復旧の連絡に使用されるメール。
EFF(Electronic Frontier Foundation)からのメールを受信するかどうかを尋ねられます。 YまたはNを選択すると、TLS証明書が自動的に取得および構成されます。これは、以下のメッセージで示されます。
ステップ4:TLS証明書をテストする
ssllabs.comにアクセスして、TLS証明書と構成をテストします。 A +を取得する必要があります HSTSが有効になっているためです。
ステップ5:phpMyAdminログインエラーのトラブルシューティング
MariaDB rootアカウントでログインすると、次のエラーが表示される場合があります。
#1698 - Access denied for user 'root '@'localhost'
および
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'
ユーザーphpmyadmin
でログインした場合 、上記のエラーは表示されません。ただし、ユーザーphpmyadmin
phpmyadmin
の管理にのみ使用できます データベース。エラーの原因は、デフォルトでは、MariDBrootユーザーがmysql_native_password
を使用する代わりに、unix_socketプラグインを介して認証されることです。 プラグイン。この問題を回避するために、別の管理者ユーザーを作成し、新しい管理者ユーザーにすべての権限を付与できます。
コマンドラインからMariaDBサーバーにログインします。
sudo mariadb -u root
パスワード認証を使用して管理者ユーザーを作成します。
create user [email protected] identified by 'your-chosen-password';
すべてのデータベースに対するすべての権限を付与します。
grant all privileges on *.* to [email protected] with grant option;
特権をフラッシュして終了します;
flush privileges; exit;
これで、adminアカウントでphpMyAdminにログインし、すべてのデータベースを管理できます。
TLS証明書の自動更新
Let's Encrypt証明書を自動的に更新するには、rootユーザーのcrontabファイルを編集するだけです。
sudo crontab -e
次に、下部に次の行を追加します。
@daily certbot renew --quiet && systemctl reload nginx
Nginxをリロードして、クライアントに新しい証明書を取得する必要があります。