MySQL: Erro fatal: Não é possível abrir e bloquear tabelas de privilégios: A tabela 'mysql.host' não existe [closed]

8

De repente, meu servidor MySQL 5.5 local parou de funcionar no meu Windows XP SP3.

Eu também tenho o WAMP Apache e o WAMP MySQL instalados, mas o WAMP MySQL não está rodando. O log de erros mostra:

  • Não é possível iniciar o servidor: Vincular na porta TCP / IP: Nenhum arquivo ou diretório desse tipo
  • Você já tem outro servidor mysqld rodando na porta: 3306?

Eu tentei mudar a porta de 3306 para 3307, mas o serviço ainda não inicia, dando erro:

O Visualizador de Eventos mostra:

  • Erro fatal: não é possível abrir e bloquear tabelas de privilégios: a tabela 'mysql.host' não existe
  • Não é possível abrir a tabela mysql.plugin. Por favor, execute mysql_upgrade para criá-lo.

Aparentemente, só posso executar mysql_upgrade se o servidor estiver em execução. Como posso criar 'mysql.host' se o serviço não puder ser iniciado?

Eu desinstalei o MySQL Server e o reinstalei, e durante o assistente de configuração após a instalação, recebo um erro: O serviço não pôde ser iniciado. Erro: 0.

Como eu procedo daqui?

    
por Steve 17.07.2011 / 07:49

8 respostas

9

Execute o seguinte comando

mysql_install_db
    
por 28.07.2011 / 16:42
5

inicialize o mysql antes de iniciar no windows.

mysqld --initialize
    
por 21.12.2015 / 10:28
1

A primeira coisa que você precisa fazer é executar estes comandos:

use mysql
show tables;

Por favor, note as diferenças

O MySQL 5.0 possui 17 tabelas no esquema mysql

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

O MySQL 5.1 possui 23 tabelas no esquema mysql

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

O MySQL 5.5 possui 24 tabelas no esquema mysql

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

Por favor note que o mysql.plugin não existe no MySQL 5.0. É muito plausível supor que você de alguma forma instalou o MySQL 5.0 e fez com que as tabelas vitais para o MySQL 5.5 desaparecessem.

Aqui estão algumas boas notícias. Há algo que você pode tentar.

Para este exemplo

  • ServerA é onde seus dados do MySQL 5.5 residem
  • ServerB é onde você criará um ambiente separado do MySQL 5.5

Aqui estão seus passos

  1. No servidor A, mkdir / root / myusers
  2. No servidor A, cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. Instale o MySQL 5.5 no ServerB
  4. scp ServerB: / var / lib / mysql / mysql / * ServidorA: / var / lib / mysql / mysql /.
  5. No servidor A, cp /root/myusers/user.*/var/lib/mysql/mysql/.
  6. serviço mysql start

É isso.

Se você estiver executando isso no Windows, os mesmos princípios devem ser aplicados.

Experimente!

ATUALIZAÇÃO 2011-07-29 16:15 EDT

Se os seus nomes de usuário tiverem privilégios específicos de banco de dados, aqui estão seus passos

  1. No servidor A, mkdir / root / myusers
  2. No servidor A, cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. No servidor A, cp /var/lib/mysql/mysql/db.* / root / myusers /.
  4. Instale o MySQL 5.5 no ServerB
  5. scp ServerB: / var / lib / mysql / mysql / * ServidorA: / var / lib / mysql / mysql /.
  6. No ServidorA, cp / raiz / myusers / * / var / lib / mysql / mysql /.
  7. serviço mysql start
por 29.07.2011 / 20:35
0

The service could not be started. Error:0.

Adicione o caminho do MySQL às variáveis de ambiente.

    
por 28.07.2011 / 17:11
0

parece que vc ja tem o mysql rodando

tente

ps ax|grep mysql

se vc ver alguma saída, provavelmente vc precisa pará-la (ou reiniciar a caixa).

se você não vir nenhuma saída, tente executar o mysqld sem demonizar e ver a saída.

    
por 29.07.2011 / 01:37
0

Eu adicionei uma tag do Windows para ajudar as pessoas a responderem à pergunta.

Meu histórico não é windows, mas os principais se aplicam.

Existe um processo mysql em execução? Em caso afirmativo, você precisará eliminá-lo antes de desinstalar. Se ainda estivesse em execução quando você tentasse desinstalar / reinstalar, você teria processos e arquivos por perto, evitando a desinstalação completa.

Abra a janela de serviços, procure por qualquer coisa com o mysql no nome e assegure-se de que esteja configurado para não tentar iniciar com uma reinicialização. Em seguida, abra a aba de processos em execução da janela de programas em execução (use CTRL-ALT-DEL para abrir) e procure e mate processos em execução com o mysql no nome.

Se você está satisfeito que não há mais processos mysql em execução, você pode continuar. Você pode querer reinicializar para ter certeza de que não há mais processos mysql em execução por aí.

Neste momento você deve ser capaz de reinstalar e iniciar o mysql.

    
por 01.08.2011 / 19:54
0

Execute o mysql-test-run e você deverá ver a seguinte saída:

./mysql-test-run
Logging: ./mysql-test-run  
2013-09-14 03:39:32 2566 [Warning] Setting lower_case_table_names=2 because file system for /var/folders/fr/sn4l2f393_v_ytcwkb0lx7_40000gp/T/_M2mZFQPjV/ is case insensitive
2013-09-14 03:39:32 2566 [Note] Plugin 'FEDERATED' is disabled.
2013-09-14 03:39:32 2566 [Note] Binlog end
2013-09-14 03:39:32 2566 [Note] Shutting down plugin 'MyISAM'
2013-09-14 03:39:32 2566 [Note] Shutting down plugin 'CSV'
MySQL Version 5.6.13
Checking supported features...
 - SSL connections supported
Using suites: main,sys_vars,binlog,federated,rpl,innodb,innodb_fts,perfschema,funcs_1,opt_trace,parts,auth_sec
Collecting tests...
 - adding combinations for binlog



 - adding combinations for rpl
Removing old var directory...
Creating var directory '/Users/das/mysql/mysql-5.6.13-osx10.7-x86_64/mysql-test/var'...
Installing system database...
Using server port 50409

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------
    
por 14.09.2013 / 09:35
0

Se você mover o seu datadir, você não apenas precisará fornecer as novas permissões de datadir, mas também precisará garantir que todos os diretórios pai tenham permissão.

Mudei meu datadir para um disco rígido, montado no Ubuntu como:

/media/*user*/Data/

e meu datadir era Bancos de dados .

Eu tive que definir permissões para 771 para cada mídia, usuário e diretórios de dados:

sudo chmod 771 *DIR*

Se isso não funcionar, outra maneira de fazer o mysql funcionar é mudar o usuário em /etc/mysql/my.cnf para root; embora não haja dúvidas de alguns problemas em fazer isso de uma perspectiva de segurança.

    
por 09.10.2014 / 14:37