Volevo avere sul mio PC (con Windows 8.1 x64) solo il server MySQL, senza Workbench o qualcosa del genere. Quindi ho scaricato l' .zip
archivio da dev.mysql.com/downloads . È un download per Win64 su x86_64 versione 5.7.9 (MySQL Community Server (GPL)).
L'ho installato come servizio Windows, ma non c'erano mysql
solo database information_schema
. Quindi ho eseguito questo:
mysql_upgrade.exe --upgrade-system-tables
E mysql
sono stati creati database. Ma insieme ad esso è successo qualcosa con l'utente root, perché non potevo mysql
più accedervi .
Così ho deciso di reimpostare questa password improvvisamente apparso (perché non l'avevo prima). Ho fondato la seguente soluzione nel manuale ufficiale, ho avviato il server in questo modo:
mysqld.exe --skip-grant-tables --console
Quindi ho aperto mysql
senza password:
mysql.exe –u root
E poi ho provato a ripristinare la password di root:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘passhere');
Ma ho questo errore:
ERRORE 1131 (42000): Stai usando MySQL come utente anonimo e gli utenti anonimi non sono autorizzati a cambiare password ".
Cos'è questo? Come sono anonimo? Tutti i comandi sono stati eseguiti cmd.exe
sotto l'amministratore.
Cosa devo fare per ripristinare la password di root in questa situazione?
Aggiornamento 1: ho provato a verificare l'utente corrente:
SELECT USER(), CURRENT_USER();
Questo dà:
+--------+----------------+
| USER() | CURRENT_USER() |
+--------+----------------+
| root@ | @ |
+--------+----------------+
È strano, perché l'ho iniziato così mysql.exe -u root
.
Quindi ho controllato la tabella degli utenti:
SELECT user FROM mysql.user;
Questo dà:
+-----------+
| user |
+-----------+
| mysql.sys |
+-----------+
È ancora più strano. Inoltre non esiste un campo password:
SELECT user, password FROM mysql.user;
ERRORE 1054 (42S22): colonna sconosciuta "password" in "elenco campi"
Quindi non posso cambiare la sua password.
E non riesco a creare un nuovo utente:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'passhere';
ERRORE 1290 (HY000): il server MySQL è in esecuzione con l'
--skip-grant-tables
opzione quindi non può eseguire questa istruzione
Adesso mi sono perso.
Aggiornamento 2: suppongo di aver fatto tutto male dall'inizio. Apparentemente, in mysqld.exe --initialize
qualche modo mi mancava un comando.
Quindi, è così che ho installato MySQL da .zip-archive, grazie a @RolandoMySQLDBA :
- Disimballare l'archivio, preparare
my.ini
. - Esegui
mysqld.exe --initialize
, ottieni la password temporanea dal.err
file. Installa MySQL come servizio ed eseguilo
mysqld --install MySQL --defaults-file="d:/path/to/mysql/my.ini"
Connettiti ad esso
mysql -u root -p
con password temporanea.Cambia la password temporanea:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';