web-dev-qa-db-fra.com

Impossible de saisir phpmyadmin en tant que root (MySQL 5.7)

J'utilise le bureau Ubuntu 16.04 (mis à jour à partir de 15.10).

J'avais installé phpmyadmin à partir de apt-get install phpmyadmin. Cela fonctionne si je vais à localhost/phpmyadmin mais je ne peux pas me connecter en tant que root.

Je l'ai beaucoup cherché. J'ai trouvé de nombreuses sources dans lesquelles ils suggèrent de modifier /etc/phpmyadmin/config.inc.php et de remplacer l'utilisateur et le mot de passe par 'root' et '' (vide pour mot de passe). Mais mon config.inc.php est différent du leur. Par exemple, dans mon fichier, il n'y a pas de ligne pour l'utilisateur et le mot de passe et il semble qu'il l'obtienne automatiquement à partir d'un autre fichier qui s'appelle /etc/phpmyadmin/config-db.php. Malgré cela, j'ai changé l'utilisateur et le mot de passe dans ce fichier, mais maintenant j'obtiens cette erreur:

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

Ce que je devrais faire?


Version Phpmyadmin: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, pour Linux (x86_64) en utilisant le wrapper EditLine

60
Mostafa Ahangarha

MySQL 5.7 a changé le modèle sécurisé: maintenant MySQL rootlogin nécessite Sudoname__.

C'est-à-dire que phpMyAdmin sera non capable d'utiliser les informations d'identification rootname__.

La solution la plus simple, la plus sûre et permanente sera de créer un nouvel utilisateur et d’accorder les privilèges requis.

1. Connectez-vous à mysql

Sudo mysql --user=root mysql

2. Créez un utilisateur pour phpMyAdmin

Exécutez les commandes suivantes (en remplaçant some_pass par le mot de passe souhaité):

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

Si votre phpMyAdmin se connecte à localhost, cela devrait suffire.

3. Facultatif et non sécurisé: autoriser les connexions à distance

Rappelez-vous : autoriser un utilisateur distant à disposer de tous les privilèges est un problème de sécurité, ce qui est et non requis dans la plupart des cas.

Dans cet esprit, si vous souhaitez que cet utilisateur dispose des mêmes privilèges lors des connexions distantes, exécutez également (en remplaçant some_pass par le mot de passe utilisé à l'étape 2). ):

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

4. Mettre à jour phpMyAdmin

A l'aide de Sudoname__, éditez le fichier /etc/dbconfig-common/phpmyadmin.conf mettant à jour les valeurs utilisateur/mot de passe dans les sections suivantes (en remplaçant some_pass par le mot de passe utilisé à l'étape 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'
117

J'avais le même problème lorsque j'utilisais mariaDB avec phpmyadmin (Ubuntu 16.04LTS).

Conditions préalables:

1) Installez 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 vous souhaitez désinstaller 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) Installer 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) Dans Apache2, créez un lien symbolique vers phpmyadmin

Sudo ln -s /etc/phpmyadmin/Apache.conf /etc/Apache2/conf-available/phpmyadmin.conf
Sudo a2enconf phpmyadmin.conf
Sudo service Apache2 restart

Ok, maintenant, si vous suivez les instructions de Rael, vous pourrez vous connecter à phpmyadmin, mais au moins pour moi, je n’ai pas pu créer de nouvelles bases de données, puisqu’un message rouge s’est affiché: No privileges (ou un message similaire). )

Le correctif consistait à reconfigurer phpmyadmin et à répondre à des questions interactives.

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

Maintenant, si vous essayez de vous connecter à phpmyadmin (localhost/phpmyadmin) en utilisant

username: root
password: pass

vous pourrez créer des bases de données.

9
Dan Costinel

Dans Ubuntu 16.04 pour Mysql 5.7, vérifiez les informations du tableau ci-dessous et effectuez les réglages nécessaires:

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 |
+------------------+-----------+-----------------------+

Vérifiez si root a le plugin auth_socket, puis lancez la commande ci-dessous:

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
6
Syed Abdul Qadeer

Si phpymadmin ne peut pas se connecter, c'est peut-être parce que le mécanisme d'authentification est défini sur auth_socket. Vous pouvez le changer pour utiliser un mot de passe régulier comme ceci:

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

Je me débattais tout à l'heure avec cette nouvelle installation d'Ubuntu 18.04 et c'est ce qui a fait que cela fonctionne. Il y a un article décent ici expliquant plus:

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

5
billynoah

Pour être complet, j'ai trouvé une solution à mon problème en utilisant MariadB version 10.1.23. La syntaxe à utiliser pour configurer un nouvel utilisateur est similaire à celle décrite dans l'article ci-dessus de @Rael Gugelmin Cunha. J'ai mis ici ma solution pour référence aux autres personnes confrontées au même problème:

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;

Cordialement

3
FIRE FOX

Se référant à Raël Cunha:

Oui, sa solution fonctionne et j'en ai essayé d'autres. Cependant, faire référence à un utilisateur ayant un mot de passe exposé sur un fichier de configuration tel que /etc/dbconfig-common/phpmyadmin.conf ressemble à une faille de sécurité pour une action à l'échelle du système.

Donc, je préférerais suggérer en ce qui concerne MariaDB 10.1.x (some_user et some_pass seront tout ce que vous pourrez trouver):

# 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;

et en laissant phpadmin setup (4) tel quel.

Connectez-vous à phpmyadmin avec vos propres informations d'identification après coup

Sur mes propres configurations, je remplace le '%' ci-dessus par 'localhost' pour des raisons de sécurité, mais si vous fermez le port 3306 sur votre serveur, cela ne présente pas nécessairement de risque de sécurité.

1

J'ai eu le même problème, j'ai suivi la plupart des conseils et rien de tout cela n'a fonctionné pour moi! Mon problème était le même quand j'ai ouvert http: // localhost/phpmyadmin dans mon navigateur, il a demandé le journal dans les détails.

J'utilisais root en tant qu'utilisateur et le mot de passe que je connaissais était correct. Et je devenais

# 1698 - Accès refusé pour l'utilisateur 'root' @ 'localhost'

Il suffisait d'utiliser phpmyadmin en tant qu'utilisateur, et non root, avec le mot de passe connu, et cela m'a laissé entrer.

1
plutesci

Seul le code ci-dessous fonctionne pour Ubuntu 18.04, php 7 ci-dessus et mysql 5.7

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

Ne remplacez pas 'phpmyadmin'. La création d'un autre utilisateur ne dispose pas des privilèges complets. Par exemple, créez un nouvel utilisateur, attribuez-lui les privilèges de base de données à cet utilisateur. Seul l'utilisateur phpmyadmin aura un accès complet.

0
Hemamalini