MySQL: ข้อผิดพลาดร้ายแรง: ไม่สามารถเปิดและล็อคตารางสิทธิ์: ตาราง 'mysql.host' ไม่มีอยู่ [ปิด]


9

ทันใดนั้นเซิร์ฟเวอร์ MySQL 5.5 ในพื้นที่ของฉันหยุดทำงานบน Windows XP SP3 ของฉัน

ฉันยังมี WAMP Apache และ WAMP MySQL ติดตั้งอยู่ แต่ WAMP MySQL ไม่ทำงาน บันทึกข้อผิดพลาดแสดง:

  • ไม่สามารถเริ่มเซิร์ฟเวอร์: ผูกบนพอร์ต TCP / IP: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  • คุณมีเซิร์ฟเวอร์ mysqld อื่นที่ใช้งานพอร์ต: 3306 อยู่แล้ว?

ฉันพยายามเปลี่ยนพอร์ตจาก 3306 เป็น 3307 แต่บริการยังคงไม่เริ่มทำงานโดยมีข้อผิดพลาด:

Event Viewer แสดง:

  • ข้อผิดพลาดร้ายแรง: ไม่สามารถเปิดและล็อคตารางสิทธิ์: ตาราง 'mysql.host' ไม่มีอยู่
  • ไม่สามารถเปิดตาราง mysql.plugin โปรดเรียกใช้ mysql_upgrade เพื่อสร้าง

เห็นได้ชัดว่าฉันสามารถเรียกใช้ mysql_upgrade เฉพาะเมื่อเซิร์ฟเวอร์กำลังทำงาน ฉันจะสร้าง 'mysql.host' ได้อย่างไรหากไม่สามารถเริ่มบริการได้

ฉันถอนการติดตั้งเซิร์ฟเวอร์ MySQL และติดตั้งใหม่และระหว่างตัวช่วยสร้างการกำหนดค่าหลังการติดตั้งฉันได้รับข้อผิดพลาด: ไม่สามารถเริ่มบริการได้ ข้อผิดพลาด: 0

ฉันจะดำเนินการจากที่นี่ได้อย่างไร


Steve คุณใช้งานบน Windows, BSD, Linux, OSX หรือ OS อื่น ๆ บ้างไหม? หากคุณใช้งานบน Windows รายละเอียดของบางขั้นตอนจะแตกต่างกัน
Rik Schneider

@Rik Schneider: Rick ฉันกำลังใช้งาน MySQL บนแล็ปท็อป Windows ของฉัน ขอบคุณ
Steve

คำตอบ:


9

เรียกใช้คำสั่งต่อไปนี้

mysql_install_db

BTW นี่เป็นสิ่งจำเป็นเมื่อทำการติดตั้งบน (อย่างน้อย) Linux CentOS 7 มิฉะนั้น mysqld จะไม่เริ่มทำงาน ฉันเห็นสิ่งนี้เมื่อฉันวิ่งsystemctl 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

เริ่มต้น mysql ก่อนเริ่มบน windows

mysqld --initialize

ฉันหวังว่าฉันจะสามารถลงคะแนนได้มากกว่าหนึ่งครั้ง ฉันค้นหาวิธีแก้ปัญหาง่ายๆนี้แล้ว ขอบคุณ!
Schiavini

1

สิ่งแรกที่คุณต้องทำคือเรียกใช้คำสั่งเหล่านี้:

use mysql
show tables;

โปรดทราบความแตกต่าง

MySQL 5.0 มี 17 ตารางในสคีมา 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 มี 23 ตารางในสคีมา 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 มี 24 ตารางในสคีมา 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                      |
+---------------------------+

โปรดทราบว่า mysql.plugin ไม่มีอยู่ใน MySQL 5.0 เป็นไปได้อย่างมากที่จะคาดเดาได้ว่าคุณติดตั้ง MySQL 5.0 และทำให้ตารางสำคัญสำหรับ MySQL 5.5 หายไป

นี่คือข่าวดี มีบางสิ่งที่คุณสามารถลองได้

สำหรับตัวอย่างนี้

  • ServerA เป็นที่เก็บข้อมูล MySQL 5.5 ของคุณ
  • ServerB เป็นที่ที่คุณจะสร้างสภาพแวดล้อม MySQL 5.5 แยกต่างหาก

นี่คือขั้นตอนของคุณ

  1. บน ServerA, mkdir / root / myusers
  2. บน ServerA ให้ cp /var/lib/mysql/mysql/user.* / root / myusers /
  3. ติดตั้ง MySQL 5.5 บน ServerB
  4. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /
  5. บน ServerA, cp /root/myusers/user.* / var / lib / mysql / mysql /
  6. บริการ mysql เริ่มต้น

แค่นั้นแหละ.

หากคุณกำลังใช้งานสิ่งนี้ใน Windows ต้องใช้หลักการเดียวกัน

ให้มันลอง !!!

อัพเดท 2011-07-29 16:15 EDT

หากชื่อผู้ใช้ของคุณมีสิทธิ์เฉพาะของ DB นี่คือขั้นตอนของคุณ

  1. บน ServerA, mkdir / root / myusers
  2. บน ServerA ให้ cp /var/lib/mysql/mysql/user.* / root / myusers /
  3. บน ServerA ให้ cp /var/lib/mysql/mysql/db.* / root / myusers /
  4. ติดตั้ง MySQL 5.5 บน ServerB
  5. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /
  6. บน ServerA, cp / root / myusers / * / var / lib / mysql / mysql /
  7. บริการ mysql เริ่มต้น

0

ไม่สามารถเริ่มบริการได้ ข้อผิดพลาด: 0

เพิ่มเส้นทาง MySQL ไปยังตัวแปรสภาพแวดล้อม


ขอบคุณ แต่มันอยู่ในตัวแปร Path แล้ว
Steve

0

ดูเหมือนว่าคุณจะใช้ mysql อยู่แล้ว

ลอง

ps ax|grep mysql

หากคุณเห็นผลลัพธ์บางอย่างคุณอาจต้องหยุดมัน (หรือกล่องรีบูต)

หากคุณไม่เห็นผลลัพธ์ใด ๆ ให้ลองเรียกใช้ mysqld โดยไม่แสดงผลและดูผลลัพธ์


0

ฉันได้เพิ่มแท็ก windows เพื่อช่วยให้ผู้คนตอบคำถาม

พื้นหลังของฉันไม่ใช่ windows แต่มีการใช้หลักการ

มีกระบวนการ mysql ที่ทำงานอยู่หรือไม่? ถ้าเป็นเช่นนั้นคุณจะต้องฆ่ามันก่อนที่จะถอนการติดตั้ง หากยังคงทำงานอยู่เมื่อคุณพยายามถอนการติดตั้ง / ติดตั้งใหม่คุณจะมีกระบวนการและไฟล์หยุดทำงานเพื่อป้องกันการถอนการติดตั้งอย่างสมบูรณ์

เปิดหน้าต่างบริการค้นหาอะไรก็ตามที่มี mysql ในชื่อและตรวจสอบให้แน่ใจว่าได้ตั้งค่าให้ไม่พยายามเริ่มต้นด้วยการรีบูต จากนั้นเปิดแท็บกระบวนการทำงานของหน้าต่างโปรแกรมที่กำลังทำงานอยู่ (ใช้ CTRL-ALT-DEL เพื่อเปิด) และค้นหาและฆ่ากระบวนการทำงานด้วย mysql ในชื่อ

หากคุณพึงพอใจว่าไม่มีกระบวนการ MySQL ที่กำลังทำงานอยู่อีกต่อไปคุณสามารถดำเนินการต่อได้ คุณอาจต้องการที่จะรีบูทเพื่อให้แน่ใจว่าไม่มีการรันกระบวนการ mysql อีกต่อไป

ในเวลานี้คุณควรจะสามารถติดตั้งและเริ่ม mysql ใหม่ได้


0

รัน mysql-test-run และคุณควรเห็นผลลัพธ์ต่อไปนี้:

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

หากคุณย้าย datadir ของคุณคุณไม่เพียง แต่ต้องให้สิทธิ์ datadir ใหม่ แต่คุณต้องทำประกันไดเรกทอรีหลักทั้งหมดได้รับอนุญาต

ฉันย้าย datadir ของฉันไปที่ฮาร์ดไดรฟ์ติดตั้งใน Ubuntu เป็น:

/media/*user*/Data/

และ datadir ของฉันคือฐานข้อมูล

ฉันต้องตั้งค่าการอนุญาตเป็น 771 สำหรับแต่ละสื่อผู้ใช้และไดเรกทอรีข้อมูล:

sudo chmod 771 *DIR*

หากวิธีนี้ใช้ไม่ได้อีกวิธีหนึ่งที่คุณสามารถทำให้ mysql ทำงานได้คือเปลี่ยนผู้ใช้ใน /etc/mysql/my.cnf เป็น root แม้ว่าจะมีข้อสงสัยบางประเด็นเกี่ยวกับการทำเช่นนั้นจากมุมมองด้านความปลอดภัย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.