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
MySQL 5.7 a changé le modèle sécurisé: maintenant MySQL root
login nécessite Sudo
name__.
C'est-à-dire que phpMyAdmin sera non capable d'utiliser les informations d'identification root
name__.
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.
Sudo mysql --user=root mysql
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.
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;
A l'aide de Sudo
name__, é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'
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.
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;
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/
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
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é.
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.
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.