Instalación manual de phpMyAdmin (Ubuntu 18.04)

Instalación manual de phpMyAdmin (Ubuntu 18.04)

A veces es necesario instalar phpMyAdmin manualmente, en lugar de usar APT. Esto puede deberse a que está utilizando MySQL 8 y / o PHP 7 y la versión proporcionada por el repositorio apt de Ubuntu no se instalará o no funcionará con esta configuración. También puede querer la última versión por las virtudes que conlleva mantenerse actualizado. Cualquiera sea la razón, este tutorial lo guiará a través del proceso básico para hacerlo.

El servidor que estoy usando ejecuta Ubuntu 18.04 (aunque este tutorial probablemente necesitará poca o ninguna revisión para versiones anteriores), Apache 2.4.37, MySQL 8.0.13 y PHP 7.2.14. La última versión de phpMyAdmin en el momento de escribir este artículo es 4.8.4.

Descargar e instalar

Después de iniciar sesión en su servidor, cambie el directorio a /usr/share (el lugar tradicional para almacenar phpMyAdmin) y descargue los archivos:

$ cd /usr/share
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.8.4/phpMyAdmin-4.8.4-all-languages.zip

Si hay una versión más nueva disponible que la 4.8.4 (puede hacerlo en su sitio web ), cambie el enlace de arriba para adaptarlo.

Ahora necesitamos descomprimir los archivos. La forma más sencilla de hacerlo es utilizar unzip:

$ sudo apt install unzip
$ sudo unzip phpMyAdmin-4.8.4-all-languages.zip

A continuación, mueva la carpeta descomprimida al directorio phpMyAdmin tradicional y limpie el archivo zip original:

$ sudo mv phpMyAdmin-4.8.4-all-languages phpmyadmin
$ sudo rm phpMyAdmin-4.8.4-all-languages.zip

Finalmente, otorgue la propiedad del directorio a www-data(el grupo usado por Apache / PHP) y otorgue los permisos apropiados:

$ sudo chown -R www-data: phpmyadmin
$ sudo chmod -R 744 phpmyadmin

Configuración de phpMyAdmin

Hay una pequeña cantidad de configuración necesaria en phpMyAdmin. Primero, copie el archivo de configuración de muestra, que usaremos como base del actual, luego, abra el archivo de configuración:

$ sudo cp phpmyadmin/config.sample.inc.php phpmyadmin/config.inc.php
$ sudo nano phpmyadmin/config.inc.php

Encuentra la línea que tiene $cfg['blowfish_secret'] = '';(debe estar cerca de la parte superior). El secreto de Blowfish es un valor único para su instancia de phpMyAdmin que se utiliza con fines de seguridad. Necesitamos una cadena aleatoria de 32 caracteres de longitud. Hay varias páginas que las generan para ti, esta es la que prefiero ya que especifica de dónde proviene la aleatoriedad /dev/urandom(sin entrar en detalles, algo bueno). Una vez que tenga su valor, cópielo en el blowfish_secret campo, luego guárdelo y salga presionando Ctrl + X, Y, luego ingrese.

Configurando Apache

Para permitir el acceso web, necesitamos agregar un archivo de configuración de Apache para phpMyAdmin:

$ sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Copie la siguiente configuración en este archivo:

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride all
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/setup>
    Require all denied
</Directory>

<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>

Esto hace lo siguiente:

  • Permite el acceso a través del alias / phpmyadmin.
  • Permite el acceso a la carpeta en sí y a los archivos .htaccess que contiene.
  • No permite el acceso a directorios de archivos confidenciales.

Finalmente, habilite y aplique esta configuración:

$ sudo a2enconf phpmyadmin
$ sudo systemctl reload apache2

Notas de MySQL 8

Si está utilizando MySQL 8, el soporte de phpMyAdmin para él en este momento no es ideal. Por un lado, descubrí que la creación de usuarios no funciona desde dentro, arrojando errores de sintaxis, por lo que probablemente sea algo que deba hacer manualmente desde la línea de comandos.

Más importante aún, si ha elegido usar el nuevo complemento de autenticación de MySQL 8 caching_sha2_password, necesitará un usuario que use el tradicional en su mysql_native_passwordlugar para iniciar sesión en phpMyAdmin. Puede crear dicho usuario iniciando sesión a través de la línea de comando ( mysql -u root -p) y ejecutando lo siguiente:

CREATE USER 'newuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Asegurar phpMyAdmin

Hay un par de pasos básicos que puede seguir para asegurar aún más su instalación de phpMyAdmin. Tenga en cuenta que estos no son obligatorios, pero se recomiendan.

La primera es cambiar el alias mediante el cual se accede a phpMyAdmin /phpmyadmina otra cosa (editando el phpmyadmin.confarchivo que creamos anteriormente). Esto reducirá drásticamente las posibilidades de que alguien encuentre la ubicación de su página de inicio de sesión de phpMyAdmin.

La otra es emplear una «autenticación básica», que en la práctica es solo una solicitud de usuario / contraseña al intentar acceder a la página. Suponiendo que todavía está en el /usr/sharedirectorio, cree un .htaccessarchivo para phpmyadmin:

$ sudo nano phpmyadmin/.htaccess

Copie lo siguiente en él:

AuthType Basic
AuthName "Restricted"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

AuthName controla el texto que aparece al usuario con la solicitud de usuario / contraseña y AuthUserFileespecifica dónde se mantiene la definición de usuario / contraseña; puede personalizar cualquiera de los dos si lo desea.

Luego cree la combinación de usuario / contraseña:

$ sudo mkdir -p /etc/phpmyadmin
$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
New password:
Re-type new password:
Adding password for user username

Finalmente, recargue Apache para activar los cambios:

$ sudo systemctl reload apache2

Conclusión

En este punto, debería ser recibido por la página de inicio de sesión de phpMyAdmin cuando navegue hasta el alias que especificó. Si puede iniciar sesión, ha instalado phpMyAdmin correctamente.