Mi è capitato di dovere creare un nuovo utente WordPress direttamente dal database MySQL; questa procedura può essere molto utile nel caso in cui vi imbattiate in qualche sito che è stato hackerato e siano stati eliminati gli utenti dal database. Si si, ho visto cose che voi umani non potete immaginare 🙂
Premetto che le procedura è abbastanza delicata, quindi se non si è certi di ciò che si sta facendo, meglio chiedere ad un professionista.
Intanto dobbiamo avere a disposizione gli accessi a PHPMyAdmin (o equivalente), per potere accedere al database del sito, altrimenti ciccia… Una volta avuto accesso al db MySQL….
- cliccare sul nome del database per espandere tutte le tabelle
- cliccare sulla tabella wp_users, troveremo una schermata simile a questa
- cliccare “inserisci” , la voce si trova nel menu in alto (mostra, struttura, sql, …)
- si aprirà il form di inserimento di un nuovo record nel database
ID : assegnare un numero, se sono presenti già altri user, assegnare un numero che non sia già stato utilizzato (prendetene nota perchè lo utilizzeremo più avanti)
user_login : questo sarà il nome utilizzato per effettuare il login, cioè la username
user_pass : questa sarà la password per il login (dal menu a tendina a lato sinistro del campo, selezionare “MD5”)
user_nicename : potete scrivere quello che volete, tipo “amministratore del sito” (senza virgolette)
user_email : indirizzo email dell’utente
user_url : potete scrivere l’indirizzo del sito, del vostro sito o anche lasciare il campo vuoto
user_registered : selezionare l’icona del calendario una data di creazione utente, va benissimo anche la data odierna
user_activation_key : lasciare vuoto
user_status : inserire il valore “0” (zero senza virgolette)
display_name : questo è il nome visualizzato quando sarete loggati - dovreste ottenere una schermata simile a quella sottostante, una votla compilati tutti i campi
- a questo punto premendo “esegui” verrà eseguita la query mysql che creeerà l’utente, ma se proviamo a loggarci otterremo questa schermata perchè l’utente è privo dei diritti
Come assegnare le autorizzazioni ad un utente WordPress direttamente dal database MySQL
- cliccare sulla tabella wp_usermeta
- cliccare su inserisci e compilare i campi come segue
unmeta_id : lasciare vuoto, viene generato in automatico
user_id : inserire l’id dell’utente creato in precedenza (nell’esempio è 9)
meta_key : digitare “wp_capabilities” (senza virgolette)
meta_value : “a:1:{s:13:”administrator”;s:1:”1″;}” (senza virgolette iniziali e finali)
meta_value per WordPress da 4.61: a:1:{s:13:”administrator”;b:1;} (senza virgolette iniziali e finali) - premere esegui e di nuovo inserisci, compilare i campi successivi come segue
unmeta_id : lasciare vuoto, viene generato in automatico
user_id : inserire l’id dell’utente creato in precedenza (nell’esempio è 9)
meta_key : digitare “wp_user_level” (senza virgolette)
meta_value : “10” (senza virgolette iniziali e finali) - Ora è possibile loggarsi alla dashboard di WordPress con il nuovo utente con diritti di amministratore
Query MySQL per aggiungere un utente a WordPress con diritti amministrativi
Per chi fosse smaliziato o volesse studiarsi direttamente la query di mysql, eccola qui .
N.B.
nome database : database (sostituitelo con il vostro altrimenti non funzionerà)
username : demo
password : demo
Query MySQL per aggiungere l’utente
1 |
INSERT INTO `databasename`.`wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES ('9', 'demo', MD5('demo'), 'Super Slot', 'test@dominio.com', 'http://www.dominio.com/', '2015-02-06 00:00:00', '', '0', 'super slot'); |
Query MySQL per impostare i permessi amministrativi
1 |
INSERT INTO `databasename`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '9', 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'); |
Query per versioni WordPress da 4.61
1 |
INSERT INTO `databasename`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '9', 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}'); |
1 |
INSERT INTO `databasename`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '9', 'wp_user_level', '10'); |
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
ciao,
articolo molto interessante e di aiuto,
ma volevo fare 1 domanda,
è possibile creare 2 amministratori in wp?
grazie
Ciao Lorenzo,
certo, nelle 3 querry MySQL è sufficiente cambiare l’id, il nome utente ed il nome mostrato.
Per esempio dove vedi demo inserisci “lorenzo” e dove vedi 9 inserisci “11” o comunque un id non utilizzato, in questo modo poi potrai loggarti con user e password “lorenzo”.
Grazie per i complimenti, fanno sempre piacere 🙂
Ciao Alessio.
Ho trovato molto utile il tuo articolo e ti ringrazio.
Ma nonostante abbia seguito tutti i passaggi punto per punto e ripetuto l’operazione più volte (elimando gli utenti creati e creandone di nuovi), continuo a non avere i permessi e mi esce l’errore “Devi farti autorizzare per accedere a questa pagina.”
Come posso risolvere?
Ti ringrazio
Maurizio
Ciao Maurizio,
può dipendere da diversi fattori, fai queste verifiche :
– apri il file wp-config.php che trovi nella root di WordPress e verifica che host, nome db, user db , password db e prefisso tabelle siano in linea con quelle effettivamente utilizzate dall’istanza di Wp
– se hai spostato il sito da locale a remoto a da un server ad un altro verifica che le path siano corrette
Ciao Alessio.
Grazie per la risposta.
Nel file wp-config.php è tutto in regola e il sito non è stato spostato.
In realtà funzionava regolarmente da oltre un anno e improvvisamente ora non è più visibile. Da phpMyAdmin io vedo il db e relativi contenuti quindi sicuramente è un problema di connessione al Db che credo sia adducibile ad Aruba a questo punto dato che nessuno ci ha messo mano.
Ciao Maurizio,
dubito che sia di Aruba il problema per questo tipo di errore, ma potrei anche sbagliarmi, prova a leggere i log.
Se dici che il file di configurazione è corretto proverei a rifare la procedura descritta nell’articolo, potrebbe darsi che per errore non sia stato cambiato un ID e quindi non vengano assegnate correttamente le autorizzazioni.
Oppure qualcunno si è divertito ed ha provato a bucare il sito.
Eh Alessio… purtroppo è così. Il sito è stato bucato. Nella tabella User c’era un utente che io credevo fosse un admin creato dal mio cliente (il sito gliel’ho consegnato un anno fa e se lo sono gestito loro…) che probabilmente ha fatto danni di varia natura. Infatti le tabelle dei post sono vuote e tutti i contenuti non ci sono più.
Ti ringrazio delle risposte e a prescindere, grazie dell’artixolo che è molto interessante.
Alla prossima 🙂
Cazzarola! Spero abbiano un backup altrimenti comincia a fare dei respiri profondi 🙂
Ciao!
Buongiorno Alessio,
ti scrivo dopo aver seguito la tua guida relativa a come aggiungere e modificare un utente in wordpress tramite DB.
Io ho un sito in wordpress e, dato che mi è stato consigliato di cambiare il prefisso standard wp_ ho fatto questa operazione:
Sono andato nell’area riservata Mysql del mio servizio di hosting e ho utilizzato la query RENAME per rinominare tutte le tabelle con prefisso wp_ con il nuovo prefisso che chiamerò (nuovoprefisso_).
A quel punto ho modificato anche il file wp-config.php con il nuovo nome di tabella. Ho poi controllato e tutte le tabelle (anche quelle interne hanno il prefisso giusto)
Ebbene quello che è successo è che il sito è fruibile e non ha errori nel front end, riesco a vederlo e visualizzarlo correttamente.
Nel backend invece, cioè se inserisco il mio username e la mia password su wp-admin il sistema non mi fa accedere, mi da questo errore:
– Devi farti autorizzare per accedere a questa pagina.
Ho seguito la tua guida e tutto è corretto i valori sono giusti ma continua a darmi questo problema. Tu mi potresti aiutare nel caso?
Buonasera Francesco,
spero si sia fatto un backup preventivo del database prima di procedere con questa delicatissima operazione.
Purtroppo non è sufficiente rinominare le tabelle con il prefesso wp_ e modificare il file wp-config.php, vi sono altre modifiche necessarie da dover apportare ma cambiano su ogni installazione di WordPress, quindi al momento vedo solo due soluzioni, o rimodifica come prima le tabelle oppure chiede consulenza ad un professionista qualsiasi non per forza a me, scelga lei.
Se non ha dimestichezza con MySQL le consiglio questo plugin All In One WP Security che tra le altre cose ha la funzione di rinomina prefisso tabelle.
Alessio
Gentilissimo Alessio, grazie per la risposta.
Prima di procedere a rinominare le tabelle ho fatto il backup di tutto il sito tramite servizio FTP con File zilla ma non ho fatto un backup da db mysql.
Ho provveduto a rinominare tutte le tabelle come all’origine, con il prefisso wp_
Come prima riesco a vedere il sito web on line perfettamente funzionante, mentre per quello che riguarda l’utente mi da sempre l’errore
– Devi farti autorizzare per accedere a questa pagina.
A questo punto mi viene un dubbio. Non è che per caso il problema sia da imputare agli accessi che ha l’utente?
Buongiorno Francesco,
mancano le permsission sull’utenza che utilizza per accedere, se segue alla lettera questo articolo può creare una nuova utenza admministrativa ed accedere con quella.
In che senso “[cut]… gli accessi che ha l’utente” ? Si spieghi meglio
Caro Alessio,
ho seguito alla lettera l’articolo che hai postato. Ho lanciato le query che hai postato, creando l’utente DEMO nel mio database.
L’utente è creato correttamente perché se entro nell’area amministrativa posso inserire username e password ed entro, ma poi mi da ancora
– Devi farti autorizzare per accedere a questa pagina.
Mi sembra incredibile
Buonasera Francesco,
in realtà non è poi così incredibile, su WP purtroppo succede spesso.
Prova con questo metodo, prima fai un backup di tutto, db incluso.
Crea il file force-update.php ed incolla quanto segue :
‘;
}
switch ($_GET[‘step’]) :
case “1”:
require(‘wp-config.php’);
txfx_log(‘WordPress loaded…’);
require(‘wp-admin/upgrade-functions.php’);
txfx_log(‘Upgrade functions loaded…’);
wp_cache_flush();
txfx_log(‘Object cache flushed…’);
make_db_current();
txfx_log(‘Database made current…’);
upgrade_160();
txfx_log(‘Data upgraded…’);
$wp_rewrite->flush_rules();
txfx_log(‘Rewrite rules flushed…’);
wp_cache_flush();
txfx_log(‘Object cache flushed…’);
txfx_log(‘
‘);
txfx_log(‘Hopefully that did it! DELETE THIS FILE FROM YOUR SERVER NOW!‘);
txfx_log(‘And then, try to access your
/wp-admin/
‘);break;
default :
txfx_log(‘This script will attempt to upgrade your database. It is intended for users of WordPress 1.5 or later.’);
txfx_log(‘You should delete this script from your server after you are done using it!‘);
txfx_log(‘
‘);
txfx_log(‘Click here to attempt the upgrade’);
break;
endswitch;
?>
Copialo nella root (dove trovi anche il file wp-config.php)
Apri il browser e digita nome-tuo-dominio.com/force-update.php
Se anche così non dovesse funzionare, collegati al db e apri la tabella wp_usermeta poi cerca nella colonna wp_capabilities a:1:{s:13:”administrator”;s:1:”1″;} e ancora nella tabella wp_user_level dovresti avere valore 10.
Grazie Alessio,
putroppo non funziona neppure cosi’, stesso problema. Ho aperto anche un ticket di assistenza con il mio fornitore di hosting. Penso che l’unica soluzione sia a questo punto installare da zero wordpress con le nuove tabelle e poi importare tutti gli articoli e i contenuti presenti nel sito. In fondo quello che mi interessa di più sono tutti i contenuti dato che il layout verrà modificato nei prossimi mesi.
Buongiorno Francesco, mi spiace non poterla aiutare, purtroppo non avendo il db davanti mi viene difficile.
Effettivamente la soluzione che cita potrebbe essere l’unica se non si riesce diversamente.
Intanto grazie mille per il supporto, è stato gentilisismo
Ciao, ho avuto diversi problemi in fase di installazione di wp in locale, in pratica l’ultimo step dell’installazione dopo inserimento user e psw riportava a pagina bianca e user e psw risultavano inesistenti. Ho seguito le indicazioni dell’articolo e finalmente riesco ad accedere tramite localhost/sito/wp-admin. Qui però sorge il problema in quanto a seguito login mi riporta alla pagina localhost/sito dove vedo in alto a dx la mia log-in ma non posso accedere alla pagina di amministrazione. ho tentato di inserire localhost/sito/wp-admin/index.php ma riporta l’errore “devi farti autorizzare”. ANche se ricarico banalmente localhost/sito/wp-admin stesso errore anche se sono già loggato. Qualche consiglio? Sto impazzendo….
Ciao Davide,
se dopo che inserici l’url per effetturare il login ti rimanda ad un’altra pagina significa che c’è un’errata configurazione del path assoluto di WP, fai in questo modo, scarica via PHPMyAdmin il database (ossia fai un dump del db), apri il file .sql con un editor di testo a basso livello tipo textedit, fai un search “localhost/sito/” e sostituiscilo con “http://localhost:8888/sito/”, poi elimina tutte le tabelle del db (le tabelle non il db stesso) e fai un import sempre da PMA.
Per la pagina bianca invece potrebbe essere semplicemente la versione di PHP, l’ultima versione di MAMP ha introdotto PHP 7, utilizza invece la 5.6.1.0 dalle impostazioni di MAMP.
Grazie delle info, proverò con la modifica al db.
Comunque uso xampp con php 5.6
Ciao. Riesco tranquillamente ad entrare nel pannello di controllo wordpress con i miei dati da super user ma non mi da la possibilità di effettuare modifiche, inserire articoli ecc…vedo solo la pagina di benvenuto. Ho provato a seguire la procedura, creo nuovi utenti ma non riesco a modificare i permessi….come potrei risolvere?
Ciao Marianna,
ma gli articoli li vedi e non li puoi editare oppure non li vedi proprio ?
Riesco a vedere soltanto la barra superiore, la bacheca, il benvenuto e il profilo…non c’è nessun’altra voce
Non hai eseguito correttamente le query, l’id dell’utente è uguale in tutte e 3 le query ?
Ciao Ho eseguito la procedura descritta passo per passo, ma riottengo lo stesso risultato ovvero:
– Devi farti autorizzare per accedere a questa pagina.
… non capisco se è una questione di permessi…
notavo però che agli altri utenti nel wp_usermeta ci sono anche altri valori assegnati.. sarà quello il motivo?
Ciao Paolo,
se hai seguito alla lettera le query, modificandole prima in modo corretto, può voler dire che c’è qualche altro problema su WP, dovresti fare il debug.
Ho risolto :-)) forse qualcosa copiato male nell istruzioni… ho copiato il meta_value da un altro utente amministratore ed è andato 🙂
Salve,
ho seguito tutta la guida per aggiungere un utente in WP tramite phpmyadmin ma nisba, mi entra ma mi compare solo la barra in alto con tanto di logo WP ma non vedo la barra delle pagine, articoli ecc.
Buongiorno Michele,
se non vede correttamente tutti gli elementi a back end è un problema di permessi, sicuro di avere eseguito corretamente tutte le query ? In special modo le ultime due ? Le ricordo che vanno modificati dei parametri con i dati del suo db prima di essere utilizzate.
Grazie per la risposta Alessio. Ho risolto. In pratica mi sono accorto che il wp_capabilities è direttamente collegato ai nomi delle tabelle stesse di phpmyadmin e quindi dall’impostazione iniziale di WordPress. Mi è bastato cambiare il wp_capabilities con un altro tipo di dicitura (uguale alle tabelle impostate su WP) come ad esempio: dgdsgd_capabilities. Ha funzionato. Ora infatti vedo tutta la barra di amministrazione a sinistra, come avessi creato l’utente dal pannello admin di WP.
Bene 🙂
Ciao Alessio, complimenti per il tuo articolo.
Ho bisogno di un plugin o qualcosa di simile con lo scopo di autorizzare uno o più utenti alla registrazione dei vari user direttamente da una pagina web (front end) questo per evitare che entri nella Dashboard di wp; rendendo le cose più semplici anche a chi non ne capisce nulla di programmazione web.
Sai se per caso esiste qualcosa di simile o che mi permetta di fare questo?
Grazie
Ciao Antonio, grazie 🙂
Forse questo plugin https://it.wordpress.org/plugins/wp-user-frontend/ , prova a dargli un’occhiata.
Ciao Alessio, grazie per il consiglio, l’app sembra essere quella giusta. Con qualche aggiustamento sicuramente farà al caso mio
Grazie ancora 😉
Articolo interessante
Avrei da porre una domanda
Con le ultime versioni di WordPress è cambiato qualcosa?
L’utente sono riuscito a crearlo ma in nessun caso ad impostarlo come amministratore.
Si crea un utente ruolo “Nessuno” !
Ciao Gianluca,
hai eseguito tuto le query ?
Tutte, passo passo: l’utente si crea ma non si riesce a dargli un “ruolo”
Hai cambiato l’id dell’utente con quello che hai utilizzato tu ?
Si, era il “2” ed ho inserito il 2!
E’ molto strano, ho provato ed a me funziona.
Può essere che plugin tipo “all in one wp security” blocchino questa possibilità?
No non centra. Perdona la domanda, da dove stai eseguendo la query ?
Dal phpmyadmin > tabella wp_user 1° passaggio (nel mio caso il prefisso è diverso, ho provato a regolarmi di conseguenza ma nulla da fare) e wp_usermeta nel 2°
Una differenza che ho subito notato dopo il 1° passaggio è stata che io potevo loggarmi senza rilascio di errori
Semplicemente una volta loggato non potevo fare nulla!
Stranissimo, potresti inviarmi gli accessi al db che ci guardo ? Scrivi qui https://alessioangeloro.it/contatti/
Purtroppo i test li stavo facendo offline tramite XAMPP
Ciao Alessio e grazie per la guida.. Problema: nell’inserimento dei dati in wp_usermeta non appare il nome utente e alcune righe risultano NULL, in fase di inserimento ho una doppia maschera separata da una spunta “Ignora”
Ciao Francesco,
riesegui tutte le query controllando l’ID dello user.
Ciao,
volevo segnalarti che la stringa “a:1:{s:13:”administrator”;s:1:”1″;}” varia in base alle versioni di WordPress.
Consiglio di duplicare quella relativa all’amministratore già esistente.
Sulla versione 4.2.15 ho utilizzato questa:
a:1:{s:13:”administrator”;b:1;}
Grazie per l’articolo, è veloce ed efficace… concordo con la correzione dell’ultimo commento !
Buondì, ho bisogno di un aiuto.
Ho rimesso online un sito web creato in wordpress dopo circa due anni, ho cambiato dominio da .it a .com. Ho problemi ora con l’accesso al pannello di controllo. Ho sguito passo passo questa guida ma quando inserisco user e password non mi fa accedere. Potrebbe essere il problema della differente versione di wordpress (4.6.1) che con questa stringa a:1:{s:13:”administrator”;s:1:”1″;} non va??
Quale procedura hai utilizzato per trasferire il sito ?
Ciao,
ho cercato di seguire la tua guida per modificare il ruolo utente dal db, ora è Sottoscrittore e voglio portarlo ad Amministratore. Come ID è 20. Ho messo i 2 codici in SQL + Esegui così, ma non cambia:
INSERT INTO `nome-database`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ’20’, ‘wp_capabilities’, ‘a:1:{s:13:”administrator”;s:1:”1″;}’);
INSERT INTO `nome-database`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ’20’, ‘wp_user_level’, ’10’);
Ciao Alberto,
dalla versione 4.6.1 di WP devi usare questa strina “a:1:{s:13:”administrator”;b:1;}”