Visualizzazione post con etichetta phpmyadmin. Mostra tutti i post
Visualizzazione post con etichetta phpmyadmin. Mostra tutti i post

mercoledì 28 giugno 2017

Creare utente in sola lettura su mysql con phpmyadmin

Oggi vediamo di rispondere ad un'esigenza specifica, ovvero quella della creazione di un utente in sola lettura su mysql.
Per far ciò però, per facilitarci la vita, compieremo questa azione usando phpmyadmin.

A cosa può servire un utente in sola lettura?
Semplice, in tutti quei casi in cui si vuole dare accesso ad un database, ad utenti che devono solo poter leggere i dati, senza così correre il rischio di fargli fare dei danni di struttura o di contenuti.

Vediamo dunque come creare un utente sola lettura con phpmyadmin, con pochi semplici click.


Creare utente in sola lettura su mysql tramite phpmyadmin


Per poter aggiungere un utente readonly ad un db mysql, procedere nel seguente modo:
  1. Lancia phpmyadmin ed accedi con le credenziali di root (se usi wamp puoi farlo con l'apposita voce dopo il click sull'icona verde)
  2. Clicca su Account utenti
  3. Crea un nuovo utente (leggi questa guida se non sai come fare) o utilizzane uno già esistente, poi clicca su Modifica privilegi
  4. Clicca in alto sulla tab Database
  5. Seleziona il database o i database a cui vuoi assegnare i permessi, poi clicca su Esegui

    Creare utente in sola lettura su mysql con phpmyadmin
  6. Ora, nella pagina che si aprirà, deflegga tutti i permessi e lascia solo quelli di Select nella tab Dati, poi clicca su Esegui.

Sola lettura

Avrai così creato un utente con privilegi di sola lettura per uno specifico database mysql.
In questo modo, l'utente associato potrà vedere tutti i dati presenti nelle tabelle del database a cui gli hai dato accesso, senza però poterli modificare.

Se invece la tua intenzione era quella di dare accessi in sola lettura solo ad una specifica tabella, leggi questo post.

Quando si dice, fidarsi è bene, non fidarsi è meglio :)

martedì 22 novembre 2016

Come configurare phpmyadmin per renderlo più sicuro

Se hai un sito wordpress o in php in generale, che utilizza come database mysql, quasi sicuramente avrai installato anche phpmyadmin.
Ora, se lo usi solo in locale, non ci sono particolari problemi di sicurezza, ma se decidi di pubblicarlo online, forse è bene modificare alcuni parametri nel file di configurazione, in modo da rendere phpmyadmin più sicuro.


Come configurare phpmyadmin per renderlo più sicuro


Per poter personalizzare phpmyadmin per aumentarne la sicurezza, puoi agire in due modi: modificare a mano il file config.inc.php (se non esistente è da creare nella cartella root del phpmyadmin), oppure usare una comoda interfaccia grafica, raggiungibile da questo indirizzo:
phpmyadmin/setup/

Ovvero, basta aggiungere /setup all'url del nostro phpmyadmin.

Accederemo in una schermata di configurazione, che ci avviserà che dobbiamo creare una cartella chiamata 'config' nella root del phpmyadmin.
Questa cartella dovrà essere ovviamente con i permessi di scrittura.

Una volta creata la cartella, potremo generare il file di configurazione di phpmyadmin, cliccando sul bottone Nuovo server.

Come configurare phpmyadmin per renderlo più sicuro

Nella schermata che si aprirà, avremo diverse tab:
  • Impostazioni di base
  • Autenticazione
  • Configurazione del server
  • Configurazione di memorizzazione
  • Monitoriaggio dei cambiamenti

Entriamo in Impostazioni di base e mettiamo il Nome host del server, localhost se phpmyadmin sta girando il locale.
Lasciamo pure tutti gli altri parametri di default, o abilitiamo la connessione SSL, se disponibile
Volendo, potremo anche cambiare la porta di connessione a phpmyadmin, se lo reputiamo necessario ai fini della sicurezza.

Impostazioni di base

Passiamo poi al tab Autenticazione e scegliamo il tipo di login che si vuole effettuare, di default è quella tramite cookie, ma potremo scegliere tra le seguenti opzioni:
  • cookie
  • config
  • http
  • signon

Autenticazione

Andiamo nella tab Configurazione del server.
Qui possiamo ad esempio mostrare solo alcuni database mysql agli utenti che si collegano a questo specifico phpmyadmin, oppure fare il contrario, escludere dalla visualizzazione alcuni database specifici.
Altre impostazioni di sicurezza utili da settare sono, la disattivazione dell'accesso di root e disabilitare l'accesso ad information_schema.
Oppure usare la sezione Host per consentire o negare l'accesso a phpmyadmin tramite indirizzo ip.

Configurazione del server

Una volta terminati tutti i settaggi, clicchiamo su Applica.

Ora, nella sezione File di configurazione, possiamo settare la lingua predefinita, il server predefinito, ed il tipo di fine del file (windows o linux).
Per generare il nostro file di configurazione di phpmyadmin (config.inc.php), clicchiamo su Salva.

File di configurazione

Adesso volendo, potremo settare altri parametri, andando in Modifica e poi usando i tab di sinistra, entrando nelle seguenti schermate:
  • Panoramica
  • Caratteristiche (dove troviamo l'utilissimo tab Sicurezza, con l'opzione Segreto Blowfish)
  • Query SQL
  • Pannello di navigazione
  • Pannello principale
  • Importa
  • Esporta

Ricordandosi ovviamente di salvare il file di configurazione cliccando alla fine su Salva.

Una volta generato il file di configurazione config.inc.php, spostiamolo dalla cartella config alla root del sito phpmyadmin.
Sovrascriviamo se presente, il vecchio file di config, ed avremo subito attive le modifiche al phpmyadmin, con subito le restrizioni che abbiamo scelto, già impostate.

Infine, per completare la messa in sicurezza del nostro phpmyadmin, cancelliamo la cartella config, in modo che nessuno possa generare altri file di configurazione senza il nostro permesso (file che comunque non risulterebbero attivi se non spostati nella root di phpmyadmin).

Un file di configurazione config.inc.php di phpmyadmin tipico, può essere una cosa del genere:
<?php
/*
 * Generated configuration file
 * Generated by: phpMyAdmin 4.6.4 setup script
 * Date: Tue, 22 Nov 2016 09:05:21 +0000
 */
/* Servers configuration */
$i = 0;
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['only_db'] = array('wordpress');
$cfg['Servers'][$i]['AllowRoot'] = false;
$cfg['Servers'][$i]['DisableIS'] = true;
/* End of servers configuration */
$cfg['blowfish_secret'] = 'uD8s(\\F3G`Y03\',@C#&J".|*;2T,T6-O';
$cfg['DefaultLang'] = 'it';
$cfg['ServerDefault'] = 1;
$cfg['NavigationDisplayServers'] = false;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>


Un'ultima considerazione va al discorso utenti di phpmyadmin che possono vedere solo determinati database.
Si, nel setup di phpmyadmin c'è l'opzione per mostrare solo alcuni database mysql, ma se per caso un utente ha permessi anche su altri db, se va nella sezione query sql, potrà eludere questa configurazione del phpmyadmin, ed agire lo stesso sui database nascosti sui quali ha i permessi.
Quindi in questi casi, è meglio configurare phpmyadmin in modo che solo determinati utenti possano accedere.
Così facendo potremo quindi garantire (ad esempio), che solo un utente possa collegarsi ad un phpmyadmin appositamente configurato per fare le query solo sul database di uno specifico sito internet.

Limitare l'accesso su phpmyadmin ad un utente specifico

Una necessità che può nascere usando phpmyadmin è quella di poter limitare l'accesso ad un utente specifico alla piattaforma, in modo che solo un determinato user possa usarla.

Questa necessità può nascere nel caso si voglia pubblicare all'esterno una versione di phpmyadmin ridotta, in modo da farvi accedere solo determinati utenti con la loro username e password.
Chiamiamo questa cosa all'inglese, phpmyadmin limit access by user, se vogliamo.


Come limitare l'accesso su phpmyadmin ad un utente specifico


Per poter far accedere a phpmyadmin solo uno o più utenti autorizzati, occorre mettere mano al codice sorgente del phpmyadmin.
Si avete capito bene, purtroppo dopo estenuanti ricerche, non ho trovato alcun parametro del config di phpmyadmin che permetta di limitare l'accesso per username, quindi ho dovuto proprio modificare l'applicazione a manina.

Il file che dobbiamo andare a modificare si chiama: AuthenticationCookie.php
e si trova in un percorso come questo:
cartellaphpmyadmin\libraries\plugins\auth

Piccola precisazione: stiamo modificando il file AuthenticationCookie.php perchè l'autenticazione tramite cookie è quella di default di phpmyadmin.
Se però abbiamo cambiato metodo di login, dovremo apportare questa modifica ad uno dei seguenti file (anche loro presenti nella cartella che vi ho già indicato): AuthenticationConfig.php, AuthenticationHttp.php, AuthenticationSignon.php... a seconda del metodo scelto.

Adesso, nel nostro AuthenticationCookie.php, andiamo a cercare la funzione authSetUser() e proprio al suo inizio, incolliamoci queste righe di codice:

if (!empty($_REQUEST['pma_username']))
{
       $qualeuser=trim($_REQUEST['pma_username']);
       if($qualeuser!="username1"&&$qualeuser!="username2") die("Attenzione, utente non abilitato");
}


Limitare l'accesso su phpmyadmin ad un utente specifico

Così facendo, avremo inibito l'accesso a phpmyadmin a tutti gli utenti che non sono username1 e username2... inutile dirvi cosa fare per abilitare altri utenti alla piattaforma.

Questa è una soluzione casereccia ed un po' grezza per limitare l'accesso a phpmyadmin tramite username... ma funziona.
Volendo, smanettandoci un po', potreste anche usare le funzioni per la gestione degli errori di phpmyadmin, in modo da avere un risultato grafico migliore nel caso qualcuno provi ad accedere con un utente non abilitato.

PS è vero che ci sono altri modi per limitare l'accesso ad un phpmyadmin pubblicato all'esterno, ad esempio tramite indirizzo ip, ma non tutti hanno l'ip statico, e potrebbe essere una criticità pubblicare online uno strumento che consente a tutti di potersi loggare su qualsiasi database mysql, dato che phpmyadmin può potenzialmente essere usato per fare la login ai database di siti diversi.

PS se vuoi sapere come migliorare ulteriormente la sicurezza di phpmyadmin leggi questo post.

giovedì 10 novembre 2016

Come duplicare un database mysql con phpmyadmin

Lo sapevi che grazie a phpmyadmin è possibile duplicare un intero database mysql?
Ebbene si, con pochi semplici click potrai avere la copia esatta del tuo database mysql, configurato esattamente come lo era l'originale.


Come duplicare un database mysql con phpmyadmin


Per clonare un database mysql con phpmyadmin, basta seguire questi semplici passaggi:
  1. Entra in phpmyadmin con l'utente root
  2. Entra nel database che vuoi duplicare
  3. Clicca su Operazioni (operations)
  4. Nella sezione Copia il database come, inserisci il nuovo nome del db e spunta i seguenti valori:
    • Struttura e dati
    • CREATE DATABASE prima di copiare
    • Aggiungi valore AUTO_INCREMENT
    • Aggiungi vincoli
    • Adatta Privilegi
  5. Infine, clicca su Esegui.

Come duplicare un database mysql con phpmyadmin

Avrai così duplicato il tuo database mysql e potrai accedervi con gli stessi utenti che già avevano i privilegi sul db originale, oppure potrai creare delle nuove utenze, a tua discrezione.

La duplicazione di un database mysql con phpadmin può essere usata per diversi motivi, uno dei quali è quello di avere una copia di backup del db mysql.

sabato 9 luglio 2016

Errore 200 phpmyadmin quando si apre la struttura di una tabella

Con phpmyadmin sotto windows, nella specifico, con la versione 4.5.2 di phpmyadmin sotto mysql 5.7.9, quando si prova ad aprire la struttura di una tabella mysql di un sito wordpress (io ho provato con la wp_users), da il seguente errore:

Errore nell'elaborazione della richiesta
Codice errore: 200
Messaggio errore: OK


errore 200

Per risolvere l'errore 200 che appare quando si apre una struttura di una tabella da phpmyadmin (errore che tra l'altro impedisce quindi di modificare la struttura di una tabella mysql tramite interfaccia grafica), si può agire nei seguenti 2 modi:

  1. Aggiornare phpmyadmin all'ultima versione stabile disponibile
  2. Cambiare la lingua del phpmyadmin dall'italiano all'inglese

Io ho usato il metodo due e ho risolto subito, riuscendo così ad entrare nella struttura della mia tabella e a modificarla senza più incappare nel terribile errore 200.

mercoledì 1 giugno 2016

Recuperare password persa wordpress con phpmyadmin

Se sei amministratore di un sito wordpress ed hai perso la password di accesso, e se ancora non avevi configurato l'smtp per spedire mail e quindi la funzione recupero password non funziona, c'è comunque la possibilità di recuperare la password persa di wordpress con phpmyadmin.

Per recuperare la password di accesso a wordpress, o meglio, per resettarla / cambiarla, collegati a phpmyadmin.
Poi, seleziona il database del tuo sito wordpress ed entra nella tabella 'wp_users'.

Troverai l'elenco degli utenti, seleziona il tuo utente (se non hai cambiato nome e non ti ricordi neanche la username, la user_login dovrebbe chiamarsi admin o root) e clicca su Modifica.

Recuperare password di wordpress con phpmyadmin

Ora dovrai modificare il campo 'user_pass', selezionando la funzione MD5, cancellando il codice strano che troverai nella colonna Valore (che corrisponde alla tua vecchia password codificata in MD5) e sostituendolo con la tua nuova password.

cambio password wordpress

Una volta inserita la tua nuova password wordpress, vai in fondo alla pagina e clicca su Esegui.

Complimenti, hai appena resettato la tua password di wordpress... ora segnatela, o dovrai ripetere questa procedura :p

Come come? Non ti ricordi neanche la password di phpmyadmin?
E ma allora è grave la cosa... scherzo, leggi questo post.

venerdì 13 maggio 2016

Come importare un database mysql con phpMyAdmin

Se hai un file di backup contenente l'sql del tuo database mysql, con phpMyAdmin è possibile importare l'intero database con tutte le tabelle ed i dati in esso contenuti, con una procedura molto semplice ed intuitiva.

Per importare un database su phpMyAdmin, accedi alla tua istanza phpMyAdmin con un utente con i privilegi di amministratore (root).

Attenzione, se avevi creato un file sql contenente anche l'istruzione per la creazione del database, devi eseguire questa operazione di importazione stando nella pagina principale di phpmyadmin, altrimenti devi selezionare il database nel quale vuoi importare le tabelle ed i dati, cliccandoci sopra.

Clicca dunque sulla voce Importa in alto nella pagina.

Come importare un database mysql con phpMyAdmin

Nella sezione File da importare, clicca su Sfoglia e seleziona dal tuo computer il file con estensione .sql, .gzip, .bzip2 o .zip contentente il database da importare.
Scegli il set di caratteri (nel dubbio lascia utf-8).

Poi, lascia fleggato: importazione parziale, abilita i controlli sulle chiavi esterne.

Seleziona il formato tra le seguenti opzioni:
  • SQL (opzione di default che quasi sicuramente sarà quella che fa al caso tuo)
  • CSV
  • Tabella mediawiki
  • Opendocument spreadsheet
  • Shape file esri
  • XML
Ed eventualmente modifica le operazioni specifiche al formato.
Infine clicca su Esegui per importare il database su questa istanza mysql.

Importare un database mysql con phpMyAdmin esegui

L'ho scritta più complicata di quella che è, in realtà alla fine, nella maggior parte dei casi per importare un nuovo database mysql usando phpmyadmin, basta cliccare su Importa, su Sfoglia e poi su Esegui :)

ps Leggi qui se non sai come importare un db su phpmyadmin.