No se puede ingresar phpmyadmin como root (MySQL 5.7)

39

Estoy usando Ubuntu Desktop 16.04 (actualizado desde 15.10).

Instalé phpmyadmin desde apt-get install phpmyadmin . Funciona si voy a localhost/phpmyadmin pero no puedo iniciar sesión como root.

He buscado mucho por eso. He encontrado muchas fuentes en las que sugieren alterar /etc/phpmyadmin/config.inc.php y reemplazar el usuario y la contraseña con 'root' y '' (vacío para contraseña). Pero mi config.inc.php es diferente de los suyos. Por ejemplo, en mi archivo, no hay una línea para usuario y contraseña, y parece que la obtiene automáticamente de otro archivo, que es /etc/phpmyadmin/config-db.php . A pesar de esto, he cambiado el usuario y la contraseña en ese archivo, pero ahora obtengo este error:

#1698 - Access denied for user 'root'@'localhost'

¿Qué debería hacer?

Versión de Phpmyadmin: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, para Linux (x86_64) usando el envoltorio EditLine

    
pregunta Mostafa Ahangarha 26.04.2016 - 18:52

8 respuestas

81

MySQL 5.7 cambió el modelo de seguridad: ahora MySQL root login requiere un sudo .

Es decir, phpMyAdmin no podrá usar root credenciales.

La solución más simple (y más segura) será crear un nuevo usuario y otorgar los privilegios necesarios.

1. Conéctese a mysql

sudo mysql --user=root mysql

2. Crear un usuario para phpMyAdmin

Ejecute los siguientes comandos (reemplazando some_pass por la contraseña deseada):

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Si tu phpMyAdmin se está conectando a localhost, esto debería ser suficiente.

3. Opcional: permitir conexiones remotas

Recuerde : permitir que un usuario remoto tenga todos los privilegios es un problema de seguridad.

Teniendo esto en cuenta, si desea que este usuario tenga los mismos privilegios durante las conexiones remotas, adicionalmente ejecute (reemplazando some_pass por la contraseña utilizada en el Paso 2):

CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. Actualiza phpMyAdmin

Usar sudo , editar /etc/dbconfig-common/phpmyadmin.conf archivo actualizando valores de usuario / contraseña en las siguientes secciones (reemplazando some_pass por la contraseña utilizada en el Paso 2):

# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'
    
respondido por el Rael Gugelmin Cunha 26.04.2016 - 19:35
7

Estaba enfrentando el mismo problema al usar mariaDB con phpmyadmin (Ubuntu 16.04LTS).

Requisitos previos:

1) Instalar MariaDB

sudo apt-get -y install mariadb-server mariadb-client
sudo mysql_secure_installation (answer to some interactive questions):
    Enter current password for root (enter for none): <enter>
    Set root password: n
    Remove anonymous users: n
    Disallow root login remotely: n
    Remove test database and access to it: n
    Reload privilege tables now: Y

Si quiere desinstalar mariaDB :

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

2) Instalar phpmyadmin

sudo apt-get -y install phpmyadmin (and answer some interactive questions)
    Configuring phpmyadmin:
        Web server to reconfigure automatically: apache2
        Configure database for phpmyadmin with dbconfig-common: Yes
        MySQL application password for phpmyadmin: <blank>

3) En apache2, crea un enlace simbólico a phpmyadmin

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo service apache2 restart

Bien, ahora, si sigues las instrucciones de Rael, podrás iniciar sesión en phpmyadmin , pero, al menos para mí, no pude crear nuevas bases de datos, ya que apareció un mensaje rojo: No privileges (o algún mensaje similar)

La solución fue reconfigurar phpmyadmin y responder algunas preguntas interactivas.

sudo dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: TCP/IP
Host name of the MySQL database server for phpmyadmin: localhost
Port number for the MySQL service: 3306
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root
MySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANT
Password confirmation: pass
Name of the database's administrative user: root
Web server to reconfigure automatically: apache2
An error occurred while installing the database: ignore

Ahora, si intentas conectarte a phpmyadmin ( localhost/phpmyadmin ) usando

username: root
password: pass

podrás crear bases de datos.

    
respondido por el Dan Costinel 19.03.2017 - 18:36
2

Para completar, he encontrado una solución a mi problema al usar MariadB versión 10.1.23. La sintaxis que se debe usar para configurar un nuevo usuario es similar a la reportada en la publicación anterior de @Rael Gugelmin Cunha. Puse aquí mi solución para hacer referencia a otros que enfrentan el mismo problema:

root@raspberrypi:# sudo mysql --user=root mysql
use mysql;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Saludos

    
respondido por el FIRE FOX 27.06.2018 - 12:02
2

En Ubuntu 16.04 para MySQL 5.7 compruebe la información de la tabla a continuación y realice la configuración necesaria:

mysql>  SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| phpmyadmin       | localhost | mysql_native_password |
| root             | %         | mysql_native_password |
+------------------+-----------+-----------------------+

Compruebe si root tiene el complemento auth_socket y ejecútelo debajo del comando:

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
    
respondido por el Syed Abdul Qadeer 25.07.2018 - 09:44
1

En referencia a Rael Cunha:

Sí, su solución funciona, y he intentado con otros. Sin embargo, hacer referencia a un usuario que tiene una contraseña expuesta en un archivo de configuración como /etc/dbconfig-common/phpmyadmin.conf parece una falla de seguridad para una acción de todo el sistema.

Así que preferiría sugerir en qué MariaDB 10.1.x se refiere (some_user y some_pass serán cualquier cosa que se te ocurra):

# mysql -u root
use mysql;
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

y dejando la configuración de phpadmin (4) como está.

Inicie sesión en phpmyadmin con sus propias credenciales después

En mis propias configuraciones, reemplace el '%' anterior por 'localhost' por razones de seguridad, pero si tiene el puerto 3306 cerrado en su servidor que no necesariamente representaría un riesgo de seguridad para usted.

    
respondido por el Antonio J. de Oliveira 07.02.2018 - 13:28
1

Si phpymadmin no puede conectarse, puede deberse al mecanismo de autenticación establecido en auth_socket . Puede cambiarlo para usar una contraseña normal como esta:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password";

Estuve luchando con esto ahora mismo en una instalación limpia de Ubuntu 18.04 y esto es lo que lo hizo funcionar. Aquí hay un artículo decente que explica más:

enlace

    
respondido por el billynoah 29.04.2018 - 05:34
0

Tuve el mismo problema, seguí la mayoría de los consejos y ninguno me funcionó. Mi problema era el mismo cuando abrí localhost / phpmyadmin en mi navegador y pedí los detalles de inicio de sesión.

Estaba agregando root como usuario. y la contraseña que sabía que era correcta. y estaba recibiendo # 1698 - Acceso denegado para el usuario 'root' @ 'localhost'

todo es usar phpmyadmin como usuario no root, y la contraseña conocida se abre.

Espero que esto ayude a cualquiera, un poco gracioso por lo mucho que lo pasé por alto. pero funciona para mí con ese error # 1698 - Acceso denegado para el usuario 'root' @ 'localhost'

    
respondido por el plutesci 15.06.2018 - 21:02
-2

si instala MySQL por separado, deténgalo con este comando a continuación     sudo / opt / lampp / lampp stop     servicio de parada mysql     sudo / opt / lampp / lampp start

    
respondido por el zouhair elhadraoui 16.03.2018 - 11:26

Lea otras preguntas en las etiquetas