Câu trả lời:
Dừng quá trình MySQL.
Bắt đầu quy trình MySQL với tùy chọn --skip-Grant-bảng.
Bắt đầu máy khách bảng điều khiển MySQL với tùy chọn gốc -u.
Liệt kê tất cả người dùng;
SELECT * FROM mysql.user;
Đặt lại mật khẩu;
UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
Nhưng KHÔNG QUÊN để
Dừng quá trình MySQL
Bắt đầu quá trình MySQL bình thường (nghĩa là không có tùy chọn --skip-Grant-bảng)
khi bạn đã kết thúc. Nếu không, bảo mật cơ sở dữ liệu của bạn có thể bị xâm phạm.
dpkg-reconfigure mysql-server-5.5
lệnh để thiết lập lại mật khẩu MySQL gốc là gì?
-u
bị bỏ qua khi máy chủ được khởi động --skip-grant-tables
.
mysql.user
được gọi password
, authentication_string
thay vào đó hãy sử dụng .
Thật không may, mật khẩu người dùng của bạn là không thể khắc phục. Nó đã được băm với hàm băm một chiều mà nếu bạn không biết là không thể đảo ngược. Tôi khuyên bạn nên đi với Xenph Yan ở trên và chỉ cần tạo một cái mới.
Bạn cũng có thể sử dụng quy trình sau từ hướng dẫn để đặt lại mật khẩu cho bất kỳ tài khoản root MySQL nào trên Windows:
Menu Bắt đầu -> Bảng điều khiển -> Công cụ quản trị -> Dịch vụ
Sau đó tìm dịch vụ MySQL trong danh sách và dừng nó. Nếu máy chủ của bạn không chạy như một dịch vụ, bạn có thể cần phải sử dụng Trình quản lý tác vụ để buộc nó dừng lại.
Tạo một tệp văn bản và đặt các tuyên bố sau trong đó. Thay thế mật khẩu bằng mật khẩu mà bạn muốn sử dụng.
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Mỗi câu lệnh CẬP NHẬT và FLUSH phải được viết trên một dòng. Câu lệnh UPDATE đặt lại mật khẩu cho tất cả các tài khoản root hiện có và câu lệnh FLUSH báo cho máy chủ tải lại các bảng cấp vào bộ nhớ.
Mở một cửa sổ giao diện điều khiển để đến dấu nhắc lệnh:
Menu Bắt đầu -> Chạy -> cmd
Khởi động máy chủ MySQL với tùy chọn --init-file đặc biệt :
C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
Nếu bạn đã cài đặt MySQL đến một vị trí không phải là C: \ mysql , hãy điều chỉnh lệnh cho phù hợp.
Máy chủ thực thi nội dung của tệp được đặt tên bởi tùy chọn --init-file khi khởi động, thay đổi từng mật khẩu tài khoản gốc .
Bạn cũng có thể thêm tùy chọn --console vào lệnh nếu bạn muốn đầu ra của máy chủ xuất hiện trong cửa sổ giao diện điều khiển thay vì trong 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 tùy chọn --defaults-file :
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
Có thể tìm thấy cài đặt --defaults-file thích hợp bằng Trình quản lý dịch vụ:
Menu Bắt đầu -> Bảng điều khiển -> Công cụ quản trị -> 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. Trường Đường dẫn đến thực thi chứa cài đặt --defaults-file .
Bây giờ bạn có thể kết nối với MySQL bằng root bằng mật khẩu mới.
mysqld-nt
thay vì mysqld
?
Một cải tiến cho câu trả lời hữu ích nhất ở đây:
1] Không cần khởi động lại máy chủ mysql
2] Mối quan tâm bảo mật đối với máy chủ MySQL được kết nối với mạng
Không cần phải khởi động lại máy chủ MySQL.
sử dụng FLUSH PRIVILEGES;
sau khi cập nhật câu lệnh mysql.user để thay đổi mật khẩu.
Câu lệnh FLUSH yêu cầu máy chủ tải lại các bảng cấp vào bộ nhớ để thông báo thay đổi mật khẩu.
Cho --skip-grant-options
phép mọi người kết nối mà không cần mật khẩu và với tất cả các đặc quyền. Bởi vì điều này không an toàn, bạn có thể muốn
sử dụng --skip-Grant-bảng kết hợp với --skip-mạng để ngăn các máy khách từ xa kết nối.
từ: tham chiếu: đặt lại-allow-generic
mysql.user
? Thông thường, đó không phải là trường hợp.
Mặc dù bạn không thể khôi phục trực tiếp mật khẩu MySQL mà không cần bruteforcing, nhưng có thể có một cách khác - nếu bạn đã sử dụng MySQL Workbench để kết nối với cơ sở dữ liệu và đã lưu thông tin đăng nhập vào "vault", bạn thật tuyệt vời.
Trên Windows, thông tin đăng nhập được lưu trữ trong % APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat - được mã hóa bằng CryptProtectData (không có bất kỳ entropy bổ sung nào). Giải mã rất dễ dàng:
std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
DATA_BLOB inblob { length, input };
DATA_BLOB outblob;
if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
throw std::runtime_error("Couldn't decrypt");
}
std::vector<unsigned char> output(length);
memcpy(&output[0], outblob.pbData, outblob.cbData);
return output;
}
Hoặc bạn có thể kiểm tra luồng DonationCoder này để biết nguồn + thực thi của việc triển khai nhanh và bẩn.
Chạy lệnh sau trong Terminal để kết nối với DBMS (bạn cần quyền truy cập root):
sudo mysql -u root -p;
chạy mật khẩu cập nhật của người dùng đích (đối với tên người dùng ví dụ của tôi là mousavi
và mật khẩu phải là 123456
):
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';
tại thời điểm này, bạn cần thực hiện một thay đổi để áp dụng các thay đổi:
FLUSH PRIVILEGES;
Làm xong! Bạn đã làm điều đó mà không có bất kỳ dừng hoặc khởi động lại dịch vụ mysql.
Nếu bạn có quyền truy cập root vào máy chủ nơi mysql đang chạy, bạn nên dừng máy chủ mysql bằng lệnh này
sudo service mysql stop
Bây giờ bắt đầu mysql bằng lệnh này
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
Bây giờ bạn có thể đăng nhập vào mysql bằng cách sử dụng
sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Hướng dẫn đầy đủ có thể được tìm thấy ở đây http://www.techmatterz.com/recover-mysql-root-password/
Đăng nhập MySql từ windows cmd bằng người dùng hiện có:
tên người dùng mys -u -p
Nhập mật khẩu: ****
Sau đó chạy lệnh sau:
mysql> SELECT * FROM mysql.user;
Sau đó, sao chép mật khẩu md5 được mã hóa cho người dùng tương ứng và có một số ứng dụng giải mã mật khẩu trực tuyến có sẵn trên web. Sử dụng mật khẩu giải mã này và sử dụng mật khẩu này để đăng nhập trong lần tiếp theo. hoặc cập nhật mật khẩu người dùng bằng lệnh Flow:
mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
Sau đó đăng nhập bằng mật khẩu mới và người dùng.
Lưu các tập tin. Trong ví dụ này, tệp sẽ được đặt tên là C: \ mysql-init.txt. nó yêu cầu hoán vị hành chính để lưu tập tin
Mặc dù cách giải thích nghiêm ngặt, hợp lý, khoa học máy tính cho câu hỏi của op sẽ yêu cầu cả "Làm cách nào để lấy lại tên người dùng MySQL của tôi" và "mật khẩu" - Tôi nghĩ rằng nó có thể hữu ích cho ai đó để giải quyết OR cách giải thích . Nói cách khác ...
1) Làm cách nào để lấy lại tên người dùng MySQL của tôi?
HOẶC LÀ
2) mật khẩu
Điều kiện sau này dường như đã được giải quyết amply rồi nên tôi sẽ không bận tâm đến nó. Sau đây là giải pháp cho trường hợp "Làm thế nào để tôi truy xuất tên người dùng MySQL của tôi". HIH.
Để tìm tên người dùng mysql của bạn, hãy chạy các lệnh sau từ shell mysql ...
CHỌN người dùng TỪ mysql.user;
nó sẽ in một bảng của tất cả người dùng mysql.