MySQL: Błąd krytyczny: Nie można otworzyć i zablokować tabel uprawnień: Tabela „mysql.host” nie istnieje [zamknięta]

9

Nagle mój lokalny serwer MySQL 5.5 przestał działać na moim systemie Windows XP SP3.

Mam również zainstalowane WAMP Apache i WAMP MySQL, ale WAMP MySQL nie działa. Dziennik błędów pokazuje:

  • Nie można uruchomić serwera: Powiązanie na porcie TCP / IP: Brak takiego pliku lub katalogu
  • Czy masz już inny serwer mysqld działający na porcie: 3306?

Próbowałem zmienić port z 3306 na 3307, ale usługa nadal się nie uruchamia, co powoduje błąd:

Podgląd zdarzeń pokazuje:

  • Błąd krytyczny: Nie można otworzyć i zablokować tabel uprawnień: Tabela „mysql.host” nie istnieje
  • Nie można otworzyć tabeli mysql.plugin. Uruchom mysql_upgrade, aby go utworzyć.

Najwyraźniej mogę uruchomić mysql_upgrade tylko wtedy, gdy serwer jest uruchomiony. Jak mogę utworzyć „mysql.host”, jeśli usługi nie można uruchomić?

Odinstalowałem MySQL Server i ponownie go zainstalowałem, a podczas instalacji po instalacji pojawia się błąd: Nie można uruchomić usługi. Błąd: 0.

Jak mogę stąd przejść?

Steve
źródło
Steve, używasz tego w systemie Windows, BSD, Linux, OSX lub innym systemie operacyjnym? Jeśli używasz go w systemie Windows, szczegóły niektórych kroków będą inne.
Rik Schneider
@Rik Schneider: Rick, korzystam z MySQL na moim laptopie z systemem Windows. Dzięki.
Steve

Odpowiedzi:

9

Uruchom następujące polecenie

mysql_install_db
Mikrofon
źródło
BTW, jest to konieczne podczas instalacji na (przynajmniej) Linux CentOS 7. W przeciwnym razie mysqld nie uruchomi się. Widziałem to, kiedy biegłemsystemctl status mysqld.service 2015-02-20 15:41:07 15160 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
Mike S
5

zainicjuj mysql przed uruchomieniem w systemie Windows.

mysqld --initialize
tvrcgo
źródło
Chciałbym móc to głosować więcej niż raz. Szukałem tego prostego rozwiązania. Dzięki!
Schiavini,
1

Pierwszą rzeczą, którą musisz zrobić, to uruchomić następujące polecenia:

use mysql
show tables;

Zwróć uwagę na różnice

MySQL 5.0 ma 17 tabel w schemacie 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                      |
+---------------------------+

MySQL 5.1 ma 23 tabele w schemacie 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                      |
+---------------------------+

MySQL 5.5 ma 24 tabele w schemacie 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                      |
+---------------------------+

Należy pamiętać, że mysql.plugin nie istnieje w MySQL 5.0. Można przypuszczać, że w jakiś sposób zainstalowałeś MySQL 5.0 i spowodowałeś zniknięcie niezbędnych tabel dla MySQL 5.5.

Oto kilka dobrych wiadomości. Możesz spróbować.

Dla tego przykładu

  • SerwerA to miejsce, w którym przechowywane są dane MySQL 5.5
  • ServerB to miejsce, w którym utworzysz osobne środowisko MySQL 5.5

Oto twoje kroki

  1. Na serwerze A: mkdir / root / myusers
  2. Na serwerze A: cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. Zainstaluj MySQL 5.5 na ServerB
  4. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /.
  5. Na serwerze A: cp /root/myusers/user.* / var / lib / mysql / mysql /.
  6. usługa mysql start

Otóż ​​to.

Jeśli używasz tego w systemie Windows, muszą obowiązywać te same zasady.

Spróbuj !!!

AKTUALIZACJA 2011-07-29 16:15 EDT

Jeśli twoje nazwy użytkowników miały uprawnienia do DB, oto twoje kroki

  1. Na serwerze A: mkdir / root / myusers
  2. Na serwerze A: cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. Na serwerze A: cp /var/lib/mysql/mysql/db.* / root / myusers /.
  4. Zainstaluj MySQL 5.5 na ServerB
  5. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /.
  6. Na serwerze A: cp / root / myusers / * / var / lib / mysql / mysql /.
  7. usługa mysql start
RolandoMySQLDBA
źródło
0

Nie można uruchomić usługi. Błąd: 0.

Dodaj ścieżkę MySQL do zmiennych środowiskowych.

kwanty
źródło
Dzięki, ale było już w zmiennej Path.
Steve
0

wygląda na to, że już masz uruchomiony mysql

próbować

ps ax|grep mysql

jeśli zobaczysz jakieś wyjście, prawdopodobnie musisz je zatrzymać (lub zrestartować).

jeśli nie widzisz żadnych danych wyjściowych, spróbuj uruchomić mysqld bez demonizacji i zobacz dane wyjściowe.

Arheops
źródło
0

Dodałem tag Windows, aby pomóc ludziom odpowiedzieć na pytanie.

Moje tło to nie Windows, ale zasady mają zastosowanie.

Czy już działa proces mysql? Jeśli tak, musisz go zabić przed odinstalowaniem. Jeśli nadal działał, gdy próbowałeś odinstalować / zainstalować ponownie, będziesz mieć wokół siebie procesy i pliki uniemożliwiające całkowite odinstalowanie.

Otwórz okno usług, poszukaj czegoś z mysql w nazwie i upewnij się, że jest ustawione tak, aby nie podejmowało próby ponownego uruchomienia. Następnie otwórz kartę uruchomionych procesów w oknie uruchomionych programów (użyj CTRL-ALT-DEL, aby otworzyć) i poszukaj i zabij uruchomione procesy z mysql w nazwie.

Jeśli jesteś przekonany, że nie ma już uruchomionych procesów MySQL, możesz kontynuować. Możesz zrestartować komputer, aby mieć pewność, że nie będą już działać żadne uruchomione procesy mysql.

W tej chwili powinieneś być w stanie ponownie zainstalować i uruchomić mysql.

Rik Schneider
źródło
0

Uruchom mysql-test-run i powinieneś zobaczyć następujące dane wyjściowe:

./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
--------------------------------------------------------------------------
Arunabh Das
źródło
0

Jeśli przenosisz swój datadir, musisz nie tylko nadać nowe uprawnienia do datadiru, ale także upewnić się, że wszystkie katalogi nadrzędne mają uprawnienia.

Przeniosłem mój katalog danych na dysk twardy, zamontowany w Ubuntu jako:

/media/*user*/Data/

a moim datadirem były bazy danych .

Musiałem ustawić uprawnienia na 771 dla każdego katalogu multimediów, użytkownika i danych:

sudo chmod 771 *DIR*

Jeśli to nie zadziała, innym sposobem na uruchomienie mysql jest zmiana użytkownika w /etc/mysql/my.cnf na root; choć bez wątpienia istnieją pewne problemy z robieniem tego z punktu widzenia bezpieczeństwa.

Kohjah Breese
źródło