MySQL: Kesalahan fatal: Tidak bisa membuka dan mengunci tabel privilege: Tabel 'mysql.host' tidak ada [ditutup]


9

Tiba-tiba server MySQL 5.5 lokal saya berhenti berjalan di Windows XP SP3 saya.

Saya juga sudah menginstal WAMP Apache dan WAMP MySQL, tetapi WAMP MySQL tidak berjalan. Log kesalahan menunjukkan:

  • Tidak dapat memulai server: Mengikat pada port TCP / IP: Tidak ada file atau direktori tersebut
  • Apakah Anda sudah memiliki server mysqld lain yang berjalan di port: 3306?

Saya mencoba mengubah port dari 3306 ke 3307, tetapi layanan masih tidak akan mulai, memberikan kesalahan:

Peraga Peristiwa menunjukkan:

  • Kesalahan fatal: Tidak bisa membuka dan mengunci tabel privilege: Tabel 'mysql.host' tidak ada
  • Tidak dapat membuka tabel mysql.plugin. Silakan jalankan mysql_upgrade untuk membuatnya.

Ternyata, saya hanya bisa menjalankan mysql_upgrade jika server sedang berjalan. Bagaimana saya bisa membuat 'mysql.host' jika layanan tidak dapat dimulai?

Saya menghapus instalasi Server MySQL dan menginstalnya kembali, dan selama wizard konfigurasi setelah instalasi, saya menerima kesalahan: Layanan tidak dapat dimulai. Kesalahan: 0.

Bagaimana saya melanjutkan dari sini?


Steve, apakah Anda menjalankan ini pada Windows, BSD, Linux, OSX, atau OS lainnya? Jika Anda menjalankannya di Windows, detail untuk beberapa langkah akan berbeda.
Rik Schneider

@Rik Schneider: Rick, saya menjalankan MySQL di laptop Windows saya. Terima kasih.
Steve

Jawaban:


9

Jalankan perintah berikut

mysql_install_db

BTW, ini diperlukan ketika melakukan instalasi pada (setidaknya) Linux CentOS 7. Jika tidak mysqld tidak akan memulai. Saya melihat ini ketika saya berlarisystemctl 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

inisialisasi mysql sebelum mulai di windows.

mysqld --initialize

Saya berharap saya bisa memperbaiki ini lebih dari satu kali. Saya sudah mencari solusi sederhana ini. Terima kasih!
Schiavini

1

Hal pertama yang perlu Anda lakukan adalah menjalankan perintah ini:

use mysql
show tables;

Harap perhatikan perbedaannya

MySQL 5.0 memiliki 17 tabel dalam skema 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 memiliki 23 tabel dalam skema 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 memiliki 24 tabel dalam skema 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                      |
+---------------------------+

Harap dicatat bahwa mysql.plugin tidak ada di MySQL 5.0. Sangat masuk akal untuk menduga bahwa Anda entah bagaimana menginstal MySQL 5.0 dan membuat tabel vital untuk MySQL 5.5 menghilang.

Ini ada berita bagus. Ada sesuatu yang bisa Anda coba.

Untuk contoh ini

  • ServerA adalah tempat tinggal data MySQL 5.5 Anda
  • ServerB adalah tempat Anda akan membuat lingkungan MySQL 5.5 yang terpisah

Ini langkahmu

  1. Di ServerA, mkdir / root / myusers
  2. Di ServerA, cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. Instal MySQL 5.5 di ServerB
  4. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /.
  5. Di ServerA, cp /root/myusers/user.* / var / lib / mysql / mysql /.
  6. layanan mysql mulai

Itu dia.

Jika Anda menjalankan ini di Windows, prinsip yang sama harus diterapkan.

Cobalah !!!

UPDATE 2011-07-29 16:15 EDT

Jika nama pengguna Anda memiliki Hak Istimewa DB, berikut adalah langkah-langkah Anda

  1. Di ServerA, mkdir / root / myusers
  2. Di ServerA, cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. Di ServerA, cp /var/lib/mysql/mysql/db.* / root / myusers /.
  4. Instal MySQL 5.5 di ServerB
  5. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /.
  6. Di ServerA, cp / root / myusers / * / var / lib / mysql / mysql /.
  7. layanan mysql mulai

0

Layanan tidak dapat dimulai. Kesalahan: 0.

Tambahkan path MySQL ke variabel lingkungan.


Terima kasih, tetapi sudah ada dalam variabel Path.
Steve

0

sepertinya Anda sudah menjalankan mysql

mencoba

ps ax|grep mysql

jika Anda melihat beberapa output, mungkin Anda perlu menghentikannya (atau reboot box).

jika Anda tidak melihat output apa pun, coba jalankan mysqld tanpa mendemonstrasikan dan melihat output.


0

Saya telah menambahkan tag windows untuk membantu orang menjawab pertanyaan.

Latar belakang saya bukan windows tetapi prinsipal berlaku.

Apakah ada proses mysql sudah berjalan? Jika demikian, Anda harus membunuhnya sebelum menghapus instalasi. Jika masih berjalan ketika Anda mencoba untuk menghapus / menginstal ulang Anda akan memiliki proses dan file berkeliaran mencegah Anda menghapus sepenuhnya.

Buka jendela layanan, cari apa pun dengan mysql di namanya, dan pastikan sudah diatur untuk tidak mencoba memulai dengan reboot. Kemudian buka tab proses yang sedang berjalan di jendela program yang sedang berjalan (gunakan CTRL-ALT-DEL untuk membuka) dan cari dan hentikan proses yang berjalan dengan mysql dalam namanya.

Jika Anda puas bahwa tidak ada lagi menjalankan proses mysql Anda dapat melanjutkan. Anda mungkin ingin melakukan reboot untuk memastikan tidak ada lagi proses mysql yang berkeliaran.

Pada saat ini Anda harus dapat menginstal ulang dan memulai mysql.


0

Jalankan mysql-test-run dan Anda akan melihat output berikut:

./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
--------------------------------------------------------------------------

0

Jika Anda memindahkan datadir Anda, Anda tidak hanya perlu memberikan izin datadir baru, tetapi Anda harus memastikan semua direktori induk memiliki izin.

Saya memindahkan datadir saya ke hard drive, yang dipasang di Ubuntu sebagai:

/media/*user*/Data/

dan datadiraku adalah Database .

Saya harus menetapkan izin ke 771 untuk masing-masing direktori media, pengguna dan Data:

sudo chmod 771 *DIR*

Jika ini tidak berhasil, cara lain agar mysql berfungsi adalah mengubah pengguna di /etc/mysql/my.cnf untuk me-root; meskipun tidak ada keraguan beberapa masalah dengan melakukan itu dari sudut pandang keamanan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.