81 votes

Impossible d'entrer dans phpmyadmin en tant que root (MySQL 5.7)

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

J'avais installé phpmyadmin à partir de par apt-get install phpmyadmin . Cela fonctionne si je vais sur localhost/phpmyadmin mais je ne peux pas m'y 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 remplacez l'utilisateur et le mot de passe par 'root' et '' (vide pour le mot de passe). Mais mon config.inc.php est différente de la 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 les récupère automatiquement d'un autre fichier qui est le suivant /etc/phpmyadmin/config-db.php . Malgré cela, j'ai modifié l'utilisateur et le mot de passe dans ce fichier, mais j'obtiens maintenant cette erreur :

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

Que dois-je faire ?


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

157voto

Rael Gugelmin Cunha Points 6185

MySQL 5.7 a changé le modèle de sécurité : désormais, MySQL root La connexion nécessite un sudo .

C'est-à-dire que phpMyAdmin sera no capable d'utiliser root les lettres de créance.

La solution la plus simple, la plus sûre et permanent La solution sera de créer un nouvel utilisateur et d'accorder les privilèges nécessaires.

1. Connectez-vous à mysql

sudo mysql --user=root mysql

2. Créez un vrai mot de passe

Dans les étapes suivantes, je vais utiliser <please_replace_this> comme exemple de mot de passe. S'IL VOUS PLAÎT, REMPLACEZ-LE PAR VOTRE MOT DE PASSE ! N'UTILISEZ PAS <please_replace_this> COMME MOT DE PASSE !

3. Créez un utilisateur pour phpMyAdmin

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

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

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

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

Souvenez-vous de : permettre à un utilisateur distant d'avoir tous les privilèges est une préoccupation de sécurité et c'est no nécessaire dans la plupart des cas.

Dans cette optique, si vous souhaitez que cet utilisateur dispose des mêmes privilèges lors des connexions à distance, en outre, exécuter (en remplaçant <please_replace_this> par le mot de passe utilisé à l'étape 2) :

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

5. Mettez à jour phpMyAdmin

使用方法 sudo , modifier /etc/dbconfig-common/phpmyadmin.conf en mettant à jour les valeurs des utilisateurs et des mots de passe dans les sections suivantes (en remplaçant le fichier <please_replace_this> 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='<please_replace_this>'

21voto

Eaten by a Grue Points 2484

Si phpymadmin ne peut pas se connecter, cela peut être dû au fait que le mécanisme d'authentification est défini comme suit auth_socket . Vous pouvez le changer pour utiliser un mot de passe ordinaire comme ceci :

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

J'étais en train de me battre avec cela sur une installation propre d'Ubuntu 18.04 et c'est ce qui m'a permis de fonctionner. Il y a un article décent ici qui explique plus :

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

9voto

Dan Costinel Points 269

Je rencontrais le même problème en utilisant mariaDB avec phpmyadmin (Ubuntu 16.04LTS).

Conditions préalables :

1) Installer 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 voulez 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 Raël, vous serez en mesure de vous connecter dans phpmyadmin Mais, du moins pour moi, je n'ai pas pu créer de nouvelles bases de données, car un message rouge est apparu : No privileges (ou un message similaire)

La solution a consisté à reconfigurer phpmyadmin et à répondre à quelques 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 serez en mesure de créer des bases de données.

8voto

Syed Abdul Qadeer Points 209

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 la racine a le plugin auth_socket puis exécutez la commande ci-dessous :

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

3voto

FIRE FOX Points 31

Pour être complet, j'ai trouvé une solution à mon problème en utilisant MariadB version 10.1.23. La syntaxe à utiliser afin de configurer un nouvel utilisateur est similaire à celle rapportée dans le post ci-dessus par @Rael Gugelmin Cunha, je mets ici ma solution pour référence à d'autres personnes rencontrant le 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;

Salutations

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X