Làm cách nào để đặt lại mật khẩu MySQL trong Windows?


2

Khi cố gắng khởi động lại mật khẩu MySQL của tôi, tôi nhận được đầu ra sau trong bảng điều khiển (đây cũng là đầu vào gây ra đầu ra):

C: & gt; "C: \ MySQL \ bin \ mysqld" --console --init-file = C: \ mysql - init.txt

111008 23:42:48 [Note] Plugin 'FEDERATED' is disabled.
111008 23:42:48 InnoDB: The InnoDB memory heap is disabled
111008 23:42:48 InnoDB: Mutexes and rw_locks use Windows interlocked functions
111008 23:42:48 InnoDB: Compressed tables use zlib 1.2.3
111008 23:42:48 InnoDB: Initializing buffer pool, size = 45.0M
111008 23:42:48 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file .\ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 24117248 bytes!
111008 23:42:48 [ERROR] Plugin 'InnoDB' init function returned error.
111008 23:42:48 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

111008 23:42:48 [ERROR] Unknown/unsupported storage engine: INNODB 
111008 23:42:48 [ERROR] Aborting

111008 23:42:48 [Note] C:\MySQL\bin\mysqld: Shutdown complete

@random: Tôi đã thêm thông tin.
Dynamic

Đánh số các bước, tôi đã quá mệt mỏi, để tìm ra dòng nào được cho là bước 6.
Ramhound

@Ramhound: Toàn bộ điều là bước 6.
Dynamic

Bạn đã tạo ra init tập tin và lưu nó ở đó? Điều gì xảy ra khi bạn thực thi C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt? (Lưu ý rằng bản chỉnh sửa của bạn chỉ sao chép bước 6 trong đó, bạn vẫn chưa cho chúng tôi biết những gì bạn đã thử!)
slhck

@slhck: Tôi đã thử từng bước trước bước sáu, sau đó tôi dừng lại ở đó.
Dynamic

Câu trả lời:


2

Nếu bạn đã làm theo các bước trong hướng dẫn sử dụng bạn chỉ cần thực hiện lệnh:

C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt

Tự động sẽ đặt lại mật khẩu (vì bạn đã viết tệp bằng lệnh để thực hiện (bước 3)).

Nếu lệnh này không hoạt động, chỉ cần thực hiện lệnh khác:

C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe"
        --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini"
        --init-file=C:\\mysql-init.txt

Tôi thực hiện điều này ở đâu?
Dynamic

"Từ menu Bắt đầu, chọn Chạy, sau đó nhập cmd làm lệnh sẽ được chạy" sau đó bạn sẽ thấy cửa sổ cmd và bạn phải đặt lệnh vào.
DavidEG

Tôi đã thực hiện lệnh đầu tiên. Tôi nhận được thông báo sau: :\\mysql-init.txt 111003 16:20:43 [Warning] '--default-character-set' is deprecated and will be re moved in a future release. Please use '--character-set-server' instead.
Dynamic

Vì vậy, sử dụng lệnh được đề xuất thay thế.
Ramhound

1

Hướng dẫn nói:

C.5.4.1.1. Đặt lại mật khẩu gốc: Hệ thống Windows trên Windows,   sử dụng quy trình sau để đặt lại mật khẩu cho tất cả root của MySQL   tài khoản:

  1. Đăng nhập vào hệ thống của bạn với tư cách Quản trị viên.
  2. Dừng máy chủ MySQL nếu nó đang chạy. Đối với một máy chủ đó là   chạy như một dịch vụ Windows, đi đến trình quản lý Dịch vụ: Từ   Menu bắt đầu, chọn Bảng điều khiển, rồi Công cụ quản trị, sau đó   Dịch vụ. Tìm dịch vụ MySQL trong danh sách và dừng nó. Nếu là của bạn   Máy chủ không chạy như một dịch vụ, bạn có thể cần phải sử dụng Tác vụ   Quản lý để buộc nó dừng lại.
  3. Tạo một tệp văn bản có chứa các tuyên bố sau. Thay thế   mật khẩu với mật khẩu mà bạn muốn sử dụng.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
    

    Viết các câu lệnh CẬP NHẬT và FLUSH mỗi dòng trên một dòng. Các   Câu lệnh CẬP NHẬT đặt lại mật khẩu cho tất cả các tài khoản root và   Câu lệnh FLUSH báo cho máy chủ tải lại các bảng cấp   bộ nhớ để thông báo thay đổi mật khẩu.

  4. Lưu các tập tin. Trong ví dụ này, tập tin sẽ được đặt tên C:\mysql-init.txt.
  5. Mở cửa sổ giao diện điều khiển để đến dấu nhắc lệnh: Từ Bắt đầu   menu, chọn Run, sau đó nhập cmd làm lệnh sẽ được chạy.
  6. Khởi động máy chủ MySQL đặc biệt --init-file tùy chọn (thông báo   dấu gạch chéo ngược trong giá trị tùy chọn được nhân đôi):

    C:\> C:\mysql\bin\mysqld-nt --init-file=C:\\mysql-init.txt 
    

    Nếu bạn đã cài đặt   MySQL đến một địa điểm khác ngoài C:\mysql, điều chỉnh lệnh   phù hợp. Máy chủ thực thi nội dung của tệp có tên bởi   các --init-file tùy chọn khi khởi động, thay đổi từng tài khoản root   mật khẩu. Bạn cũng có thể thêm --console tùy chọn cho lệnh nếu bạn   muốn đầu ra máy chủ xuất hiện trong cửa sổ giao diện điều khiển chứ không phải trong một   tệp nhật ký. Nếu bạn đã cài đặt MySQL bằng Trình hướng dẫn cài đặt MySQL,   bạn có thể cần chỉ định một --defaults-file Tùy chọn:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini" --init-file=C:\\mysql-init.txt 
    

Thích hợp --defaults-file có thể tìm thấy cài đặt bằng Trình quản lý dịch vụ: Từ   menu Bắt đầu, chọn Bảng điều khiển, rồi Công cụ quản trị, sau đó chọn   Dịch vụ. Tìm dịch vụ MySQL trong danh sách, nhấp chuột phải vào nó và   chọn tùy chọn Thuộc tính. Đường dẫn đến trường thực thi chứa   các --defaults-file cài đặt.   7. Sau khi máy chủ đã khởi động thành công, hãy xóa C:\mysql-init.txt.

Vì vậy, trước tiên, bạn phải tạo tệp như đã nêu ở điểm 3 và sau đó, sử dụng một dòng lệnh (Bắt đầu- & gt; Run- & gt; CMD (ENTER), chạy mysqld-nt.exe với --init-file param trỏ vào tập tin đó. Hãy nhớ sử dụng đường dẫn đầy đủ cho cả mysqld-nt.exe và tệp đã tạo của bạn.


Ok, vậy làm cách nào để chạy mysqld-nt.exe?
Dynamic

Bạn đã tìm thấy thư mục cài đặt mysqld-nt.exe? Nếu có, hãy gọi nó là MYSQLDIR. Sau đó chạy Start- & gt; Run- & gt; cmd và nhấn ENTER. Trong cửa sổ màu đen xuất hiện, viết "MYSQLDIR\mysqld-nt.exe" --init-file="full_name_txt_file_created_in_point_3" và nhấn ENTER
Marco

Tôi tìm thấy mysqld.exe. Là thư mục bạn nói về cái giữ cái này?
Dynamic

vâng, cái mà tôi gọi là MYSQLDIR là cái nằm trong mysqld-nt.exe
Marco

Tôi đã thử điều này không có may mắn.
Dynamic

1

Trong trường hợp của bạn, trước khi bạn thậm chí có thể đặt lại mật khẩu, bạn cần khắc phục sự cố khởi động.

Lưu ý lỗi đầu tiên được liệt kê trong nhật ký lỗi MySQL:

InnoDB: Error: log file .\ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 24117248 bytes!

Điều này có nghĩa là bạn có thể đã sao chép các tệp cơ sở dữ liệu của mình từ một vị trí khác hoặc bạn đã chỉnh sửa cài đặt my.cnf và chúng không còn phù hợp với kích thước tệp ib_logfile0 thực. Tập trung vào vấn đề này đầu tiên.


Tôi ước tôi có thể nâng cấp điều này 3 lần vì đó là câu trả lời duy nhất trong chủ đề này là chính xác. Có ai khác thậm chí đọc thông báo lỗi?
Aaron Brown

Cảm ơn @AaronBrown! Có vẻ như câu hỏi đã được chỉnh sửa rất nhiều, do đó sẽ giải thích câu trả lời từ người khác.
dabest1

Rất tiếc, bạn đã đúng. Tôi xin lỗi các áp phích khác.
Aaron Brown

1

Tôi đã trả lời một câu hỏi như thế này trong DBA StackExchange vào ngày 26 tháng 9 năm 2011 .

Người này đã chấp nhận câu trả lời của tôi.

Nó giống như một bản hack của my.ini và nó sẽ phù hợp với bạn.

CẬP NHẬT 2011-10-19 07:12 EDT

Tất cả những gì bạn phải làm là xóa ib_logfile0 và ib_logifle1 và mysqld sẽ khiến InnoDB tạo lại hai tệp nhật ký innodb.

Tôi muốn đã nhìn thấy bản ghi lỗi trước đó. Tất cả thời gian này tôi tiếp tục giúp bạn giải quyết các vấn đề tài trợ.


Tôi gặp lỗi: system error 1067 has occurred khi cố gắng bắt đầu dịch vụ MySQL.
Dynamic

Nhật ký lỗi nói gì đã xảy ra ???
RolandoMySQLDBA

Nhật ký lỗi? Nhật ký lỗi gì? Xin vui lòng tôi rất mới với điều này.
Dynamic

Theo mặc định, bất cứ nơi nào datadir của mysql, có một nhật ký lỗi mặc định thường là hostname.err.
RolandoMySQLDBA

Và datadir thường được đặt ở đâu?
Dynamic
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.