====== phpMyAdmin ====== ===== Remove repository-installation ===== - **Purge the Package and dependencies if you previously installed it from Debian's repository**: The purge flag instructs ''apt'' to erase the package binaries along with its main configuration files.sudo apt purge phpmyadmin sudo apt autoremove --purge - **Delete remaining configuration & web root leftovers**: ''apt'' sometimes leaves empty directories or user-modified configuration blocks untouched. Wipe them completely with the following commands:sudo rm -rf /etc/phpmyadmin sudo rm -rf /usr/share/phpmyadmin sudo rm -rf /var/lib/phpmyadmin - **Clear web server configurations**: remove apache's setup link and reload the service:sudo rm -f /etc/apache2/conf-available/phpmyadmin.conf sudo rm -f /etc/apache2/conf-enabled/phpmyadmin.conf sudo systemctl reload apache2 - **Remove the phpMyAdmin storage database**: If dbconfig-common didn't automatically drop the internal tracking database, log into your MySQL/MariaDB terminal to remove it:sudo mysql -u root -p DROP DATABASE IF EXISTS phpmyadmin; DROP USER IF EXISTS 'phpmyadmin'@'localhost'; FLUSH PRIVILEGES; # check databases and users SHOW DATABASES; SELECT User, Host FROM mysql.user; EXIT; ===== Installation ===== - We will not use any of the standard paths used in Debian or other distributions. All files related to phpMyAdmin will remain in the custom path (e.g. ''/home/user/html/phpMyAdmin'') where we download the files and which is the easiest way for maintenance and later version upgrades.\\ \\ - Navigate to ''/home/user/html'', download the latest stable tarball, extract it, and rename the folder:cd /home/user/html sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-english.tar.gz sudo tar -xvzf phpMyAdmin-latest-english.tar.gz sudo rm phpMyAdmin-latest-english.tar.gz sudo mv phpMyAdmin-*-english phpmyadmin - Create the temporary folder required by phpMyAdmin and assign proper web server ownership:$ sudo mkdir -p /home/user/html/phpMyAdmin/tmp $ sudo chown -R www-data:www-data /home/user/html/phpMyAdmin $ sudo chmod -R o-rwx /home/user/html/phpMyAdmin - To upgrade to a newer version simply download the new version and extract it to the same folder. Files created by the user will remain the same, e.g. ''apache.conf'', ''config.inc.php'', and ''htpasswd.setup''. * __Note__: Debian 10 dropped //phpmyadmin// from it's repository. Older and newer Debian versions include it. ===== phpMyAdmin Configuration ===== - Create the configuration file from the sample template and generate a secure blowfish secret for cookie encryption:sudo cp /home/user/html/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php - Generate a 32-character random string using OpenSSL:openssl rand -base64 24 > secret - Open ''/home/user/html/phpmyadmin/config.inc.php'' and paste the generated string into the $cfg['blowfish_secret'] line:$cfg['blowfish_secret'] = 'YOUR_GENERATED_STRING_HERE'; - Add custom settings:$cfg['FirstLevelNavigationItems'] = 150; // number of databases in navigation, default: 100 $cfg['MaxNavigationItems'] = 150; // number of tables in db navigation, default: 50 $cfg['NavigationWidth'] = 300; // width of the navigation window, default: 240 $cfg['RetainQueryBox'] = true; // retain query box, results of query shown below box, default: false $cfg['ShowPhpInfo'] = true; // show phpinfo link on home screen, default: false $cfg['TempDir'] = '/home/user/html/phpMyAdmin/tmp'; // you may omit this line as the default is ./tmp - You may check [[https://docs.phpmyadmin.net/en/latest/|phpMyAdmin’s documentation]] for other settings to add - Leave the commented out settings in ''config.inc.php'' unchanged. The ''pma'' settings are better done within phpMyAdmin, where you click "Find out why" in the warning at the bottom of the screen when you first run phpMyAdmin, and then create the database ''phpmyadmin'' which will contain those settings. ===== apache2 Configuration ===== - Create ''/etc/apache2/conf-available/phpmyadmin.conf'':# phpMyAdmin default Apache configuration Alias /phpmyadmin /home/user/html/phpMyAdmin # Secure access to phpMyAdmin by restricting access to it's parent, for example by IP address or domain name, local or external Require all denied Require ip 127.0.0.1 Options SymLinksIfOwnerMatch DirectoryIndex index.php AddType application/x-httpd-php .php SetHandler application/x-httpd-php php_value include_path . php_admin_value upload_tmp_dir /home/user/html/phpMyAdmin/tmp php_admin_value open_basedir /home/user/html/phpMyAdmin/:/usr/share/ # Authorize for setup AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /home/user/html/phpMyAdmin/htpasswd.setup Require valid-user # Disallow web access to directories that don't need it Require all denied Require all denied Require all denied - Enable the configuration, check the configuration, and restart apache:$ sudo a2enconf phpmyadmin $ sudo apachectl configtest $ sudo systemctl restart apache2 - Create a regular MariaDB user for the purpose of managing databases through phpMyAdmin, if you haven't done that yet when configuring MariaDB. You would create a user that has privileges to all tables within the database, as well as the power to add, change, and remove user privileges, with this command. Whatever privileges you assign to this user, be sure to give it a strong password as well:$ sudo mariadb MariaDB [(none)]> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'user'@'hostname'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit - Make sure permissions are set to traverse directories, particularly ''/home/user/html/'' and ''/home/user/www/'' ===== Run phpMyAdmin ===== - Access phpMyAdmin by appending ''/phpmyadmin'' to any website url hosted on the same server. - You will get a warning //Configuration storage has not been setup//. Click link **Find out why**. - Now click **Setup configuration storage**. ==== Links ==== * phpMyAdmin [[https://docs.phpmyadmin.net/en/latest/config.html|Configuration]]