This is an old revision of the document!
apt to erase the package binaries along with its main configuration files.sudo apt purge phpmyadmin sudo apt autoremove --purge
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
sudo rm -f /etc/apache2/conf-available/phpmyadmin.conf sudo rm -f /etc/apache2/conf-enabled/phpmyadmin.conf sudo systemctl reload apache2
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;
/home/user/html/phpMyAdmin) where we download the files and which is the easiest way for maintenance and later version upgrades./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
sudo cp /home/user/html/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
openssl rand -base64 24 > secret
Use code with caution.Create the temporary folder required by phpMyAdmin and assign proper web server ownership:bashsudo mkdir -p /var/lib/phpmyadmin/tmp sudo chown -R www-data:www-data /var/lib/phpmyadmin /usr/share/phpmyadmin sudo chmod -R 0755 /usr/share/phpmyadmin
apache.conf later) and set ownership:$ tar xvf phpMyAdmin-5.2.3-english.tar.gz sudo mv phpMyAdmin-5.2.3-english/ /home/user/html/phpMyAdmin $ sudo chown -R www-data:www-data /home/user/html/phpMyAdmin
apache.conf, config.inc.php, and htpasswd.setup.Step 2:
/home/user/html/phpMyAdmin).$ sudo mkdir -m770 /home/user/html/phpMyAdmin/tmp
config.sample.inc.php to config.inc.php and edit as follows$ sudo vim /home/user/html/phpMyAdmin/config.inc.php $cfg['blowfish_secret'] = 'new 32 byte secret key';
config.inc.php:$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
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./home/user/html/phpMyAdmin/apache.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
<Directory /home/user/html>
<RequireAny>
Require all denied
Require ip 127.0.0.1
</RequireAny>
</Directory>
<Directory /home/user/html/phpMyAdmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
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/
</IfModule>
</Directory>
# Authorize for setup
<Directory /home/user/html/phpMyAdmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /home/user/html/phpMyAdmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /home/user/html/phpMyAdmin/templates>
Require all denied
</Directory>
<Directory /home/user/html/phpMyAdmin/libraries>
Require all denied
</Directory>
<Directory /home/user/html/phpMyAdmin/setup/lib>
Require all denied
</Directory>
Require all denied as we will not use the setup script. However, if you do want to use the setup script prior to creating config.inc.php, first create the password file to access the setup script's directory:$ sudo htpasswd -c /home/user/html/phpMyAdmin/htpasswd.setup user
$ sudo ln -s /home/user/html/phpMyAdmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.conf $ sudo service apache2 restart
$ 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
/home/user/html/ and /home/user/www/