change URL phpmyadmin :
Edit /etc/phpmyadmin/apache.conf and comment (#) the first Alias directive like thath:
Alias /phpmyadmin /usr/share/phpmyadmin to/change this /usr/share/phpmyadmin
change phpMyAdmin port :
Just to be clear, this is not a setting of PhpMyAdmin, it is a setting of the configuration of Apache2, and we need to create new VirtualHost for this purpose.
1. Understanding of the default configuration of PhpMyAdmin. By default (within Ubuntu 16.04) PhpMyAdmin is included (and enabled) into the Apaches configuration (for all VirtualHosts!) through this additional configuration file:
/etc/apache2/conf-enabled/phpmyadmin.conf
This file is a symbolic link to the file /etc/apache2/conf-available/phpmyadmin.conf, which is a symbolic link to the file /etc/phpmyadmin/apache.conf, which will be used in the next step.
2. Create new VirtualHost configuration file. Lets call it phpmyadmin.conf and create it by nano(or you can use your favorite text editor):
sudo nano /etc/apache2/sites-available/phpmyadmin.conf
The content of this file should looks like:
Listen 99 <VirtualHost *:99> ServerName localhost <Directory /usr/share/phpmyadmin> AllowOverride None Require all granted </Directory> DocumentRoot /usr/share/phpmyadmin Include /etc/phpmyadmin/apache.conf ErrorLog ${APACHE_LOG_DIR}/phpmyadmin.error.log CustomLog ${APACHE_LOG_DIR}/phpmyadmin.access.log combined </VirtualHost>
Where:
-
Listen 99instructs Apache2 to listen on port99. Like @L.D.James says you can put this directive in/etc/apache2/ports.confor you can leave it here; -
<VirtualHost *:99>...</VirtualHost>defines a VirtualHost which will handle the requests form all interfaces (*) on port:99. -
ServerName localhostthis directive is optional and can be customised according to your needs. (Usually there haveServerNameset on the Server level - in/etc/apache2/apache2.conf); -
<Directory /usr/share/phpmyadmin>...</Directory>this directive is optional because the access permissions for/usr/share/are usually set in/etc/apache2/apache2.conf. But you can add specific rules here, for example you canSet Up Password Authentication; -
DocumentRoot /usr/share/phpmyadminthis directive sets/usr/share/phpmyadminas directory that forms the main document tree visible from the web, for the current VirtualHost; -
Include /etc/phpmyadmin/apache.confthis directive includes the default phpMyAdmins configuration into Apaches configuration. Thus/etc/phpmyadmin/apache.confwill be included only for the current VirtualHost! Instead of this directive you can copy/paste the content of/etc/phpmyadmin/apache.confin this place.
3. Switch Apaches configuration and restart it.
sudo a2disconf phpmyadmin sudo a2ensite phpmyadmin sudo systemctl restart apache2.service
Where:
a2disconf phpmyadminwill disable the default phpMyAdmins configuration, described in 1.a2ensite phpmyadminwill enable the new VirtualHost, described in 2.
!!. Edit /etc/phpmyadmin/apache.conf and comment (#) the first Alias directive like thath:
#Alias /phpmyadmin /usr/share/phpmyadmin
This step is optional, but otherwise http://localhost:99 and http://localhost:99/phpmyadminwill provide identical result, so I suppose we do not need that :)
!!. If you want this new VirtualHost to be accessible from the outside dont forget to add port 99into your firewall's rules. If you use UFW you can do that by this command:
sudo ufw allow 99/tcp
With iptables you can do that by this command:
sudo iptables -A INPUT -p tcp -m tcp --dport 99 -j ACCEPT