MySQL: Lỗi nghiêm trọng: Không thể mở và khóa các bảng đặc quyền: Bảng 'mysql.host' không tồn tại [đã đóng]


9

Thật bất ngờ, máy chủ MySQL 5.5 cục bộ của tôi đã ngừng chạy trên Windows XP SP3.

Tôi cũng đã cài đặt WAMP Apache và WAMP MySQL, nhưng WAMP MySQL không chạy. Nhật ký lỗi hiển thị:

  • Không thể khởi động máy chủ: Ràng buộc trên cổng TCP / IP: Không có tệp hoặc thư mục như vậy
  • Bạn đã có một máy chủ mysqld khác đang chạy trên cổng: 3306 chưa?

Tôi đã thử thay đổi cổng từ 3306 thành 3307, nhưng dịch vụ vẫn không khởi động, báo lỗi:

Trình xem sự kiện hiển thị:

  • Lỗi nghiêm trọng: Không thể mở và khóa các bảng đặc quyền: Bảng 'mysql.host' không tồn tại
  • Không thể mở bảng mysql.plugin. Vui lòng chạy mysql_upTHER để tạo nó.

Rõ ràng, tôi chỉ có thể chạy mysql_upTHER nếu máy chủ đang chạy. Làm cách nào tôi có thể tạo 'mysql.host' nếu dịch vụ không thể khởi động?

Tôi đã gỡ cài đặt Máy chủ MySQL và cài đặt lại nó, và trong quá trình hướng dẫn cấu hình sau khi cài đặt, tôi gặp lỗi: Không thể khởi động dịch vụ. Lỗi: 0.

Làm thế nào để tôi tiến hành từ đây?


Steve bạn đang chạy cái này trên Windows, BSD, Linux, OSX hay một số HĐH khác? Nếu bạn đang chạy nó trên Windows, các chi tiết cho một số bước sẽ khác nhau.
Rik Schneider

@Rik Schneider: Rick, tôi đang chạy MySQL trên máy tính xách tay Windows của tôi. Cảm ơn.
Steve

Câu trả lời:


9

Chạy lệnh sau

mysql_install_db

BTW, điều này là cần thiết khi thực hiện cài đặt trên (ít nhất là) Linux CentOS 7. Nếu không, mysqld sẽ không khởi động. Tôi đã thấy điều này khi tôi chạysystemctl 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

khởi tạo mysql trước khi bắt đầu trên windows.

mysqld --initialize

Tôi ước tôi có thể nâng cao điều này hơn một lần. Tôi đã tìm kiếm giải pháp đơn giản này. Cảm ơn!
Schiavini

1

Điều đầu tiên bạn cần làm là chạy các lệnh sau:

use mysql
show tables;

Xin lưu ý sự khác biệt

MySQL 5.0 có 17 bảng trong lược đồ 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 có 23 bảng trong lược đồ 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 có 24 bảng trong lược đồ 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                      |
+---------------------------+

Xin lưu ý rằng mysql.plugin không tồn tại trong MySQL 5.0. Rất có lý khi phỏng đoán rằng bằng cách nào đó bạn đã cài đặt MySQL 5.0 và làm cho các bảng quan trọng cho MySQL 5.5 biến mất.

Đây là một số tin tốt. Có một cái gì đó bạn có thể thử.

Ví dụ này

  • ServerA là nơi chứa dữ liệu MySQL 5.5 của bạn
  • ServerB là nơi bạn sẽ tạo một môi trường MySQL 5.5 riêng biệt

Đây là các bước của bạn

  1. Trên ServerA, mkdir / root / myusers
  2. Trên ServerA, cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. Cài đặt MySQL 5.5 trên ServerB
  4. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /.
  5. Trên ServerA, cp /root/myusers/user.* / var / lib / mysql / mysql /.
  6. dịch vụ mysql bắt đầu

Đó là nó.

Nếu bạn đang chạy cái này trong Windows, các nguyên tắc tương tự phải được áp dụng.

Hãy thử một lần !!!

CẬP NHẬT 2011-07-29 16:15 EDT

Nếu tên người dùng của bạn có Đặc quyền DB cụ thể, đây là các bước của bạn

  1. Trên ServerA, mkdir / root / myusers
  2. Trên ServerA, cp /var/lib/mysql/mysql/user.* / root / myusers /.
  3. Trên ServerA, cp /var/lib/mysql/mysql/db.* / root / myusers /.
  4. Cài đặt MySQL 5.5 trên ServerB
  5. scp ServerB: / var / lib / mysql / mysql / * ServerA: / var / lib / mysql / mysql /.
  6. Trên ServerA, cp / root / myusers / * / var / lib / mysql / mysql /.
  7. dịch vụ mysql bắt đầu

0

Dịch vụ không thể được bắt đầu. Lỗi: 0.

Thêm đường dẫn MySQL vào các biến môi trường.


Cảm ơn, nhưng nó đã có trong biến Path.
Steve

0

có vẻ như bạn đã chạy mysql

thử

ps ax|grep mysql

Nếu bạn thấy một số đầu ra, có lẽ bạn cần dừng nó (hoặc hộp khởi động lại).

Nếu bạn không thấy bất kỳ đầu ra nào, hãy thử chạy mysqld mà không hủy bỏ và xem đầu ra.


0

Tôi đã thêm một thẻ windows để giúp mọi người trả lời câu hỏi.

Nền của tôi không phải là windows nhưng hiệu trưởng áp dụng.

Có một quá trình mysql đã chạy? Nếu vậy bạn sẽ cần phải giết nó trước khi gỡ cài đặt. Nếu nó vẫn chạy khi bạn cố gắng gỡ cài đặt / cài đặt lại, bạn sẽ có các quy trình và tệp bị treo xung quanh ngăn bạn gỡ cài đặt hoàn toàn.

Mở cửa sổ dịch vụ, tìm kiếm bất cứ thứ gì có tên mysql và đảm bảo rằng nó được đặt thành không cố gắng bắt đầu với khởi động lại. Sau đó mở tab quy trình đang chạy của cửa sổ chương trình đang chạy (sử dụng CTRL-ALT-DEL để mở) và tìm và tiêu diệt các quy trình đang chạy với tên mysql.

Nếu bạn hài lòng rằng không còn quá trình mysql nào đang chạy, bạn có thể tiếp tục. Bạn có thể muốn khởi động lại để chắc chắn rằng không có quá trình mysql nào đang chạy xung quanh.

Tại thời điểm này, bạn sẽ có thể cài đặt lại và bắt đầu mysql.


0

Chạy mysql-test-run và bạn sẽ thấy đầu ra sau:

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

Nếu bạn di chuyển datadir của mình, bạn không chỉ cần cấp quyền datadir mới mà còn cần đảm bảo tất cả các thư mục cha mẹ đều có quyền.

Tôi đã chuyển datadir của mình sang ổ cứng, được gắn vào Ubuntu dưới dạng:

/media/*user*/Data/

và datadir của tôi là Cơ sở dữ liệu .

Tôi đã phải đặt quyền thành 771 cho mỗi thư mục phương tiện, người dùng và Dữ liệu:

sudo chmod 771 *DIR*

Nếu điều này không hoạt động, một cách khác bạn có thể khiến mysql hoạt động là thay đổi người dùng trong /etc/mysql/my.cnf thành root; mặc dù không có nghi ngờ gì về một số vấn đề với việc làm điều đó từ góc độ bảo mật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.