Impossibile inserire phpmyadmin come root (MySQL 5.7)


66

Sto usando Ubuntu desktop 16.04 (aggiornato dalla 15.10).

Avevo installato phpmyadmin da apt-get install phpmyadmin. Funziona se vado a localhost/phpmyadminma non riesco ad accedere come root.

L'ho cercato molto. Ho trovato molte fonti in cui suggeriscono di modificare /etc/phpmyadmin/config.inc.phpe sostituire l'utente e la password con "root" e "" (vuoto per la password). Ma il mio config.inc.phpè diverso dal loro. Ad esempio nel mio file, non esiste una riga per utente e password e sembra che lo ottenga automaticamente da un altro file che è /etc/phpmyadmin/config-db.php. Nonostante ciò, ho modificato l'utente e la password in quel file, ma ora ho questo errore:

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

Cosa dovrei fare?


Phpmyadmin Versione: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, per Linux (x86_64) usando il wrapper EditLine


Quale versione di MySQL?
Rael Gugelmin Cunha,

La domanda è aggiornata
Mostafa Ahangarha,

IL MODO SEMPLICE cerca login e pathword in /etc/mysql/debian.cnf - Ubuntu 16.04
cl-r

Risposte:


128

MySQL 5.7 ha cambiato il modello sicuro: ora l' rootaccesso a MySQL richiede un sudo.

Vale a dire, phpMyAdmin sarà non in grado di utilizzare rootle credenziali.

La soluzione più semplice, sicura e permanente sarà la creazione di un nuovo utente e la concessione dei privilegi richiesti.

1. Connettiti a mysql

sudo mysql --user=root mysql

2. Crea una vera password

Nei passaggi seguenti userò some_passcome password di esempio. PER FAVORE, SOSTITUISCI CON LA TUA PASSWORD! NON USARE SOME_PASSCOME PASSWORD!

3. Creare un utente per phpMyAdmin

Esegui i seguenti comandi (sostituendo some_passcon la password desiderata):

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

Se phpMyAdmin si connette a localhost, questo dovrebbe essere sufficiente.

4. Opzionale e non sicuro: consente connessioni remote

Ricorda : consentire a un utente remoto di avere tutti i privilegi è un problema di sicurezza e questo non è richiesto nella maggior parte dei casi.

Con questo in mente, se si desidera che questo utente di avere gli stessi privilegi durante le connessioni remote, inoltre gestito (che sostituisce some_passla password utilizzata nel passaggio # 2):

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

5. Aggiorna phpMyAdmin

Utilizzando sudo, modifica il /etc/dbconfig-common/phpmyadmin.conffile aggiornando i valori utente / password nelle seguenti sezioni (sostituendo some_passcon la password utilizzata nel passaggio 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'

2
Investigherò. Come soluzione alternativa nel frattempo, è possibile aggiungere un nuovo utente e concedere tutte le autorizzazioni, quindi aggiungerlo al file di configurazione phpmyadmin.
Rael Gugelmin Cunha,

9
Mi sono innamorato del fatto che MySQL continua a rompere le cose dopo gli aggiornamenti. Stavo usando felicemente root nel mio workbench e ora sembra che l'unica soluzione sia "sudo mysql" sulla riga di comando, creare un nuovo utente, concedere tutti gli stessi privilegi e usarlo in Workbench. Stupido.
Andris,

3
@MostafaAhangarha Dopo aver esaminato, ho scoperto che è consentita la password vuota, ma l' rootutente ha sempre richiesto l' sudoutilizzo su 5.7. Quindi, ho aggiornato la risposta per guidare la creazione di un nuovo utente con tutti i privilegi.
Rael Gugelmin Cunha,

3
@Andris Questo costringerà le persone a usare MySQL in un modo più sicuro. Non è mai una buona idea consentire comunque all'utente root del database di accedere senza password. Potrebbe andare bene su una macchina di sviluppo locale, ma su un server è molto pericoloso.
Dan,

2
@Dan - questa è la mia più grande lamentela - ha rotto il mio ambiente di sviluppo locale dopo l'aggiornamento a Ubuntu 16.04 senza alcun avviso. Non mi dispiace che cose come queste siano quelle predefinite per le nuove installazioni ma potrei almeno chiedere prima di installare un aggiornamento.
Andris,

10

Stavo affrontando lo stesso problema quando usavo mariaDB con phpmyadmin (Ubuntu 16.04LTS).

Prerequisiti:

1) Installa 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

Se si desidera disinstallare 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) Installa 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) In apache2, crea un collegamento simbolico a phpmyadmin

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

Ok, ora, se segui le istruzioni di Rael, sarai in grado di accedere phpmyadmin, ma, almeno per me, non sono stato in grado di creare nuovi database, come è apparso un messaggio rosso: No privileges(o qualche messaggio simile)

La correzione era riconfigurando phpmyadmin e rispondendo ad alcune domande interattive.

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

Ora se provi a connetterti a phpmyadmin ( localhost/phpmyadmin) usando

username: root
password: pass

sarai in grado di creare database.


1
La ringrazio per la risposta. Ma non era meglio condividere solo l'ultima parte anziché l'intera? Penso che il resto non sia utile qui?
Mostafa Ahangarha,

@MostafaAhangarha Forse il post è un po 'troppo lungo, ma mi piace sempre sapere il contesto in cui viene data una risposta.
Dan Costinel,

Esecuzione sudo dpkg-reconfigure phpmyadmin ha qualche connessione con l'installazione di mariadb e mysql senza problemi? Se sì, le tue informazioni potrebbero essere utili (potrebbe essere perché stai suggerendo la rimozione di mysql che è il DB che sto usando e che userò). Altrimenti, non ha senso dargli il contesto. Se sbaglio, rendimi corretto.
Mostafa Ahangarha,

2
Ho solo seguito la riconfigurazione e ora funziona.
cwhisperer,

È una buona idea non avere password per l'account di root?
kurdtpage

6

In Ubuntu 16.04 per Mysql 5.7, controlla sotto le informazioni della tabella ed esegui le impostazioni necessarie:

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

Controlla se root ha il plugin auth_socket quindi esegui sotto il comando:

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

Funzionerà fino al prossimo aptaggiornamento di MySQL . Cioè, dovrai applicarlo dopo ogni aggiornamento di MySQL su Ubuntu.
Rael Gugelmin Cunha,

6

Se phpymadmin non riesce a connettersi, potrebbe essere dovuto al meccanismo di autenticazione impostato su auth_socket. Puoi cambiarlo per usare una password normale come questa:

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

Stavo lottando con questo proprio ora su un'installazione pulita di Ubuntu 18.04 e questo è ciò che l'ha fatto funzionare. C'è un articolo decente qui che spiega di più:

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


3

Per completezza, ho trovato una soluzione ai miei problemi nell'uso di MariadB versione 10.1.23. La sintassi da utilizzare per configurare un nuovo utente è simile a quella riportata nel post sopra da @Rael Gugelmin Cunha, ho messo qui la mia soluzione per riferimento ad altri che affrontano lo stesso 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;

Saluti


1
Benvenuti in Ask Ubuntu! Chiedi a Ubuntu è solo per Ubuntu, per favore non pubblicare risposte su Raspbian (basato su Debian).
fosslinux,

2
@ubashu Questa soluzione non è specifica di Raspbian, è specifica di MariaDB.
Thomas Ward

Grazie! Tuttavia, non è ancora possibile creare un nuovo database.
danger89,

2

Ho avuto lo stesso problema, ho seguito la maggior parte dei consigli e nessuno di questi ha funzionato per me! Il mio problema era lo stesso quando ho aperto http: // localhost / phpmyadmin nel mio browser, chiedendo i dettagli di accesso.

Stavo usando root come utente e la password che conoscevo era corretta. E stavo ottenendo

# 1698 - Accesso negato per l'utente 'root' @ 'localhost'

Bastava usare phpmyadmincome utente, non root, con la password conosciuta e mi ha fatto entrare.


3
Vuoi dire che il nome utente dovrebbe essere "phpmyadmin"?
Mostafa Ahangarha,

1
Sì, ha funzionato per me
plutesci il

E per me che ha seguito un tutorial, la password era "some_pass" haha. Grazie!
Marcelo Ágil,

@ MarceloÁgil Ho inserito diversi avvisi nella mia risposta sopra, chiedendo alle persone di sostituire some_passcon una vera password!
Rael Gugelmin Cunha,

1

Riferendosi a Rael Cunha:

Sì, la sua soluzione funziona e ne ho provate altre. Tuttavia, fare riferimento a un utente con una password esposta su un file di configurazione come /etc/dbconfig-common/phpmyadmin.confsembra un difetto di sicurezza per un'azione a livello di sistema.

Quindi preferirei suggerire ciò che MariaDB 10.1.xè preoccupante (some_user e some_pass saranno tutto ciò che potresti trovare):

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

e lasciando phpadmin setup (4) così com'è.

Accedi a phpmyadmin con le tue credenziali in seguito

Sul mio setup sostituisco il '%' sopra con 'localhost' per motivi di sicurezza, ma se hai la porta 3306 chiusa sul tuo server che non ti presenterebbe necessariamente un rischio per la sicurezza.


0

Solo sotto il codice funziona per Ubuntu 18.04, php 7 sopra e mysql 5.7

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

Non sostituire "phpmyadmin". La creazione di qualsiasi altro utente non ha tutti i privilegi come creare un nuovo utente, assegnare i privilegi di database a quell'utente in quel modo. Solo l'utente phpmyadmin avrà pieno accesso.


-2

se installi MySQL separato fermalo con questo comando sotto sudo / opt / lampp / lampp stop service mysql stop sudo / opt / lampp / lampp start

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.