How To Install phpMyAdmin with Nginx on Ubuntu 20.04 May 3, 2020 Raj 4 min read CONTENTS Prerequisites Install MariaDB Server Standalone Database LEMP Stack Install phpMyAdmin Configure phpMyAdmin Create DB Admin User Access phpMyAdmin Conclusion SHARE THIS DOCUMENT IS ALSO AVAILABLE FOR CentOS 8 CentOS 7 Debian 10 phpMyAdmin is a free and open-source web interface for managing MySQL and MariaDB servers. It is widely used by web hosting companies to enable website owners to create and manage databases on their own. phpMyAdmin helps us to perform database activities such as creating, deleting, querying, database, tables, columns, etc. In this post, we will see how to install phpMyAdmin with Nginx on Ubuntu 20.04. Prerequisites Install MariaDB Server To manage databases with phpMyAdmin, your system must have a database instance running and the Nginx web server. Standalone Database Follow the below tutorials and prepare your system for setting up phpMyAdmin. Step 1: How To Install MariaDB on Ubuntu 20.04 OR Step 1: How To Install MySQL 8.0 on Ubuntu 20.04 Then, Step 2: How To Install LEMP Stack on Ubuntu 20.04 You can skip the installation of the MariaDB server in Step 2 – LEMP stack tutorial if you have followed Step 1 – MariaDB/MySQL installation. Install the below PHP extensions for phpMyAdmin to connect with the database. sudo apt install -y php-json php-mbstring LEMP Stack READ: How To Install LEMP Stack on Ubuntu 20.04 Install the below PHP extensions for phpMyAdmin to connect with the database. sudo apt install -y php-json php-mbstring Install phpMyAdmin The phpMyAdmin available in the Ubuntu OS repository for Ubuntu 20.04 is a bit old. So, we will download the latest version of phpMyAdmin from the official website. wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz Extract phpMyAdmin using the tar command. tar -zxvf phpMyAdmin-5.0.2-all-languages.tar.gz Move the phpMyAdmin to your desired location. sudo mv phpMyAdmin-5.0.2-all-languages /usr/share/phpMyAdmin Configure phpMyAdmin Copy the sample configuration file. sudo cp -pr /usr/share/phpMyAdmin/config.sample.inc.php /usr/share/phpMyAdmin/config.inc.php Edit the configuration file. sudo nano /usr/share/phpMyAdmin/config.inc.php Generate a blowfish secret code and update the secret in the configuration file. $cfg['blowfish_secret'] = 'CfX1la/aG83gx1{7rADus,iqz8RzeV8x'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ Also, uncomment the phpMyAdmin storage settings. Change the controluser and controlpass with your user and password who have access to phpMyAdmin’s configuration database which we will create in the next step. This user account is used to access phpMyAdmin configuration storage. /** * phpMyAdmin configuration storage settings. */ /* User used to manipulate with storage */ $cfg['Servers'][$i]['controlhost'] = 'localhost'; // $cfg['Servers'][$i]['controlport'] = ''; $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'pmapass'; /* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; Credit: TECHIES WORLD Import the create_tables.sql to create tables for phpMyAdmin. sudo mysql < /usr/share/phpMyAdmin/sql/create_tables.sql -u root -p Login to MariaDB. sudo mysql -u root -p Add the user and grant permission to phpMyAdmin’s configuration database. CREATE USER 'pma'@'localhost' IDENTIFIED BY 'pmapass'; GRANT ALL ON phpmyadmin.* TO 'pma'@'localhost'; FLUSH PRIVILEGES; exit Create a virtual host configuration file for phpMyAdmin under the /etc/nginx/conf.d directory. sudo nano /etc/nginx/conf.d/phpMyAdmin.conf Use the following server block to create a virtual host for phpMyAdmin. Change the domain name (server_name) as per your requirement. server { listen 80; server_name pma.itzgeek.local; root /usr/share/phpMyAdmin; location / { index index.php; } ## Images and static content is treated different location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 30d; } location ~ /\.ht { deny all; } location ~ /(libraries|setup/frames|setup/libs) { deny all; return 404; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$fastcgi_script_name; } } Create a tmp directory for phpMyAdmin and then change the permission. sudo mkdir /usr/share/phpMyAdmin/tmp sudo chmod 777 /usr/share/phpMyAdmin/tmp Set the ownership of the phpMyAdmin directory. sudo chown -R www-data:www-data /usr/share/phpMyAdmin Restart the services. sudo systemctl restart nginx sudo systemctl restart php7.4-fpm Create DB Admin User By default, MariaDB root user is allowed to log in only via the Unix socket. So, we will now create a database administrative user with permission to manage all databases. GRANT ALL PRIVILEGES ON *.* TO 'dbadmin'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT; If required, you can disable Unix socket authentication for MariaDB root user and enable native password login. Access phpMyAdmin Access the phpMyAdmin using the web browser: http://your-fully-qualified-domain-name Log in with database admin user we just created in the previous step. Login to phpMyAdmin You will get the home page where you can manage databases. phpMyAdmin Home Page Conclusion That’s All. I hope this post helped you to install phpMyAdmin with Nginx on Ubuntu 20.04. Please share your feedback in the comments section. ubuntu-20.04 phpmyadmin nginx php mariadb Prev Post How To Install Visual Studio Code On Ubuntu 20.04 Next Post How To Install MySQL 8.0 on Ubuntu 20.04 RELATED POSTS How To Install Linux, Nginx, MariaDB, PHP (LEMP Stack) in Ubuntu 20.04 How To Install MariaDB on Ubuntu 20.04 How To Upgrade To Ubuntu 20.04 From Ubuntu 18.04 / Ubuntu 19.10 [Detailed Guide] How To Install Visual Studio Code On Ubuntu 20.04 How To Install VirtualBox Guest Additions On Ubuntu 20.04 How To Install Nagios On Ubuntu 20.04 Please enable JavaScript to view the comments powered by Disqus. comments powered by Disqus RECENT POSTS How To Install VirtualBox On Linux Mint 20 How To Backup and Restore Ubuntu & Linux Mint With Timeshift How To Upgrade To Linux Mint 20 From Linux Mint 19 [Detailed Guide] How To Install KVM On Ubuntu 20.04 / Linux Mint 20 How To Install Plex Media Server On Ubuntu 20.04 / Linux Mint 20 How To Install Android Studio on Ubuntu 20.04 TOP POSTS Install xrdp on CentOS 7 / RHEL 7 Install Gnome GUI on CentOS 7 / RHEL 7 Change default network name (ens33) to old “eth0” on Ubuntu… Install μTorrent (uTorrent) on Ubuntu 14.04 How To Configure High-Availability Cluster on CentOS 7 /… How To Install and Configure VNC Server in CentOS 7 / RHEL 7