Reset password di root di MySql

Ogni tanto capita di dimenticare la password di root di MySql.

In tal caso viene a mancare la possibilità di accedere al server per fare manutenzione, restore, backup dei database.

Per ripristinare una password di accesso come root è necessario effettuare le seguenti operazioni:

  1. Scrivere il seguente comando in un file di testo e salvarlo in un file denominato mysql-init.txt:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
  2. Chiudere il servizio MySql dalla maschera dei servizi di windows.
  3. Quando il server viene eseguito potrebbe utilizzare un file di dati non standard. In tal caso è necessario conoscere la posizione di questo file altrimenti il processo mysqld non si avvierà. La posizione del file si può trovare guardando il comando che viene lanciato dal servizio. Se questo comando contiene il parametro —defaults-file= allora è necessario copiare la posizione di questo file prima di eseguire il comando successivo.
  4. Aprire il command prompt in modalità “Esegui come amministratore“.
  5. Eseguire il comando seguente impostando i valori dei due file come da istruzioni precedenti:
    mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=c:\tmp\mysql-init.txt
  6. Fermare l’esecuzione del comando con CTRL+C.
  7. A questo punto il server è pronto per essere eseguito con il nuovo utente di root.

Creazione progetto yii2

Per la creazione di un nuovo progetto yii2 si può utilizzare il comodo comando composer.

Il problema è che composer funziona, attualmente, con la versione di php fino alla 8.1, pertanto se qualcuno avesse installato la versione più recente, questa non funzionerà per la creazione di un nuovo progetto.

Si può ovviare a questo facendo in modo di lanciare composer con una versione di php precedente.

Per farlo, è sufficiente posizionarsi all’interno del direttorio dove si intende generare il progetto e poi dare il seguente comando:

c:\php\php7.4.33\php.exe c:\ProgramData\ComposerSetup\bin\composer.phar create-project yiisoft/yii2-app-advanced advanced

intendendo che php sia nel direttorio c:\php\php7.4.33.

Questo farà sì che composer usi la versione precedente di php e il tutto funzionerà.

p.s. un comando per aggiornare la versione di composer è il seguente:

composer self-update --1

Per ripristinare composer alla nuova versione:

composer self-update --2

Per creare un progetto secondo nuovi std si può usare come template di progetto il seguente:

composer create-project pzavoli71/yii2-app-advanced -s dev provina

il quale creerà il progetto nel direttorio “provina”.

Una volta eseguito il comando ci si dovrà spostare nel direttorio “provina” e lanciare il seguente comando:

php init

il quale si limiterà a generare alcuni file di servizio che non vengono salvati nel repository (params-local.php, ecc.) che andranno configurati per l’accesso al db,per la e-mail, ecc.

Prima di lanciare il comando che creerà le tabelle di base nel DB è necessario assicurarsi che quando si lancino comandi console, questi non utilizzino parametri legati al WEB. In particolare, è necessario rimuovere il richiamo al main.php dentro al file yii, commentando la relativa riga:

$config = yii\helpers\ArrayHelper::merge(
//require DIR . '/common/config/main.php',
require DIR . '/common/config/main-local.php',
require DIR . '/console/config/main.php',
require DIR . '/console/config/main-local.php'
);

Infatti nel file main.php c’è solitamente il parametro che configura la request, che in modalità console non funziona:

    'request' => [
        'parsers' => [
            'multipart/form-data' => 'yii\web\MultipartFormDataParser'
        ],
    ],

Ora si possono creare le tabelle di base che serviranno per la gestione degli utenti e dei permessi, lanciando il comando:

php yii migrate

il quale si limiterà a cercare comandi nel direttorio console/migrations e li lancerà uno per volta.