No Linux, as tabelas de concessão padrão do MySQL podem ser criadas com o mysql_install_db
script, mas isso não funciona no Windows.
Como as tabelas de concessão padrão podem ser instaladas no Windows?
(Não, não estou procurando a resposta de que os resultados do Google estão cheios de como eles são instalados automaticamente no Windows, porque esse é o caso apenas da distribuição do instalador, não do pacote ZIP. Além disso, isso não ajuda depois O MySQL está instalado e o diretório de dados está danificado ou está sendo substituído ou algo assim.)
Eu sabia que já havia enfrentado isso antes e consegui descobrir, então procurei em minhas unidades e encontrei um arquivo em lote que havia escrito da última vez.
Para qualquer outra pessoa que tenha esse problema, o que você precisa fazer é executar o daemon do servidor com os
--bootstrap
parâmetros.Aqui está o script que usei para despejar todos os bancos de dados em um arquivo SQL e reimportá-los (ou seja, manualmente - e de forma inconveniente - implementando uma contraparte do MySQL para o
vacuum
comando do SQLite).Se você teve esse estranho dilema nas tabelas de concessão do MySQL para Windows, recomendo o seguinte:
Etapa 1. Obtenha a distribuição do arquivo ZIP que não contém o instalador.
Etapa 2. Descompacte seu conteúdo para
C:\MySQLZipStuff
Etapa 3. Procure a pasta
C:\MySQLZipStuff\data\mysql
Etapa 4. Copie todos os arquivos
C:\MySQLZipStuff\data\mysql
para a pasta mysql do diretório de dados desejado.Passo 5.
net start mysql
Se você já possui a pasta mysql, pode fazer isso:
Etapa 1. Edite
my.ini
adicionando esta linha na seção [mysqld]Passo 2.
net stop mysql
Etapa 3.
net start mysql
Neste ponto, você pode apenas digitar 'mysql' e pronto. No entanto, você não pode executar comandos GRANT com tabelas de permissões desativadas.
Etapa 4. Você terá que inserir um superusuário manualmente. Assim
a)
INSERT INTO mysql.user SET user='root',host='localhost';
b)
SELECT * FROM mysql.user WHERE user='root' AND host='localhost'\G
Isso mostrará todas as colunas na tabela do usuário. Você terá que alterar manualmente cada coluna assim:
UPDATE mysql.user SET select_priv='Y',insert_priv='Y',... WHERE user='root' AND host='localhost';
c) Configure uma senha para root@localhost assim:
Etapa 5. Remova
skip-grant-tables
eskip-networking
demy.ini
Etapa 6.
net stop mysql
Passo 7.
net start mysql
Agora você pode logar no mysql como root usando 'whateverpasswordyouwant' como senha.
De uma chance !!!
PARA SUA INFORMAÇÃO,
é
--initialize
agora, em vez do obsoleto--bootstrap
NB. por uma questão de completude:
Para executar isso usando uma conta sem privilégios:
Em seguida, inicie o servidor:
Para quem usa o XAMPP e enfrenta esse problema, o XAMPP vem com um backup dessas tabelas mysql padrão.
Copie tudo nesta pasta
C:\xampp\mysql\backup\mysql
e cole emC:\xampp\mysql\data\mysql
, substituindo tudo.Esteja avisado: os dados podem ser perdidos - não sei, fiz uma instalação limpa.