Làm thế nào để tìm ra mật khẩu root của MySQL


167

Tôi không thể tìm ra mật khẩu root MySQL của mình; Làm thế nào tôi có thể tìm ra điều này? Có tập tin nào mà mật khẩu này được lưu trữ không?

Tôi đang theo liên kết này nhưng tôi không có thư mục directadmin tại địa phương.


Tìm thấy bởi một Tìm kiếm đơn giản của Google: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran

11
mật khẩu gốc mặc định là - hãy đợi nó - "root" (không có dấu ngoặc kép) hoặc không có mật khẩu nào cả (và máy chủ mysql có thực sự là của bạn không)
Nikola Bogdanović

vâng, đó là máy chủ mysql cục bộ của tôi trên máy tính xách tay của tôi
Om3ga

Vì vậy, có ai đó chỉ cần vượt qua câu hỏi này và đưa ra một downvote cho mỗi câu trả lời đúng và có liên quan ?
lanzz

Câu trả lời:


142

nhờ @thusharaK tôi có thể đặt lại mật khẩu root mà không cần biết mật khẩu cũ.

Trên Ubuntu tôi đã làm như sau:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Sau đó chạy mysql trong một thiết bị đầu cuối mới:

mysql -u root

Và chạy các truy vấn sau để thay đổi mật khẩu:

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

Trong MySQL 5.7, trường mật khẩu trong trường bảng mysql.user đã bị xóa, bây giờ tên trường là 'verify_ chuỗi'.

Thoát khỏi chế độ an toàn mysql và bắt đầu dịch vụ mysql bằng cách:

mysqladmin shutdown
sudo service mysql start

24
Tôi đã phải sử dụng mysqladmin -u root -p shutdown, với mật khẩu mới.
SL Barth - Phục hồi Monica

2
Luồng hướng dẫn tuyệt vời đặc biệt: sau đó chạy mysql trong một thiết bị đầu cuối mới
Mohammed Subhi Sheikh Quroush

8
tôi không thể làm được điều này mysql -u root. Nó hiển thị lỗiAccess denied
Avinash Raj

4
@AvinashRaj: Hãy thử điều này: sudo mysql -u root
Allen Gingrich

Tuyệt vời. Tôi đang hiểu những gì đã hoạt động trong RHEL 7: Terminal 1: dịch vụ sudo mysql dừng sudo mysqld_safe --skip-Grant-bảng --skip-syslog --skip-mạng Terminal 2: mysql -u root CẬP NHẬT mysql.user SET Password = PASSWORD ('mật khẩu mới') Người dùng WHERE = 'root'; QUYỀN RIÊNG TƯ; mysqladmin -u root -p shutdown Lưu ý: Khi bạn tắt mysqladmin, bạn sẽ thấy chế độ an toàn thoát trong Terminal 1. Dịch vụ sudo mysql bắt đầu Đó là nó và nó hoạt động như một bùa mê với mật khẩu mới!
Người dùng StackOverFlow

65

Bạn không thể xem mật khẩu băm; điều duy nhất bạn có thể làm là thiết lập lại nó!

Dừng MySQL:

sudo service mysql stop

hoặc là

$ sudo /usr/local/mysql/support-files/mysql.server stop

Khởi động nó ở chế độ an toàn:

$ sudo mysqld_safe --skip-grant-tables

(dòng trên là toàn bộ lệnh)

Đây sẽ là một lệnh đang diễn ra cho đến khi quá trình kết thúc, vì vậy hãy mở một cửa sổ shell / terminal khác, đăng nhập mà không cần mật khẩu:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQL 5.7 trở lên:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Bắt đầu MySQL:

sudo mysql start

hoặc là

sudo /usr/local/mysql/support-files/mysql.server start

Mật khẩu mới của bạn là 'mật khẩu'.


sudo /usr/local/mysql/support-files/mysql.server dừng sudo: /usr/local/mysql/support-files/mysql.server: lệnh không tìm thấy
Isuru

Phải làm gì trong trường hợp này?
Isuru

Có vẻ như mysql không được cài đặt đúng cách. Gỡ cài đặt đúng cách và cài đặt lại.
tk_

Cảm ơn rất nhiều. Một cái gì đó kỳ quặc với tôi mysql_secure_installationvà root đã không còn hợp tác. Các authentication_stringthiết lập làm gì?
sẽ

3
Để khởi động lại, hãy thử mysqladmin -u root -p shutdownvới mật khẩu mới sau đósudo service mysql start
đàn

37

MySQL 5.7 trở lên lưu root trong tệp nhật ký MySQL.

Vui lòng thử điều này:

sudo grep 'temporary password' /var/log/mysqld.log

Trong trường hợp của tôi, mật khẩu không có ở đây; tuy nhiên, thay vào đó, /var/log/mysql/error.logcó một cảnh báo về mật khẩu gốc bị trống - vì vậy loại này đã lưu trong ngày của tôi :)
Janaka Bandara

19

một điều làm tôi vấp phải một bản cài đặt mới của myQuery và tự hỏi tại sao tôi không thể lấy mật khẩu mặc định để hoạt động và tại sao ngay cả các phương thức thiết lập lại không hoạt động. cũng chỉ ra rằng trên Ubuntu 18 phiên bản mới nhất của máy chủ mysql hoàn toàn không sử dụng mật khẩu auth cho người dùng root. Vì vậy, điều này có nghĩa là không quan trọng bạn cài đặt cái gì, nó sẽ không cho phép bạn sử dụng nó. nó hy vọng bạn đăng nhập từ một ổ cắm đặc quyền. vì thế

mysql -u root -p

hoàn toàn không hoạt động, ngay cả khi bạn đang sử dụng đúng mật khẩu !!! nó sẽ từ chối truy cập bất kể bạn đặt cái gì vào.

Thay vào đó bạn cần sử dụng

sudo mysql

Nó sẽ làm việc với bất kỳ mật khẩu. sau đó một khi bạn vào bạn cần gõ

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

sau đó đăng xuất và bây giờ điều đẫm máu cuối cùng sẽ chấp nhận mật khẩu của bạn



14

Thực hiện theo các bước sau để đặt lại mật khẩu trong hệ thống Windows

  1. Dừng dịch vụ Mysql từ trình quản lý tác vụ

  2. Tạo một tệp văn bản và dán câu lệnh dưới đây

MySQL 5.7.5 trở về trước:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');


MySQL 5.7.6 trở lên:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';

  1. Lưu như mysql-init.txtvà đặt nó vào 'C' drive.

  2. Mở dấu nhắc lệnh và dán như sau

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


2
Đây là một cứu tinh, mẹo TUYỆT VỜI!
Nicholas Kreidberg

làm việc tại Centos7 mysqld --init-file=/root/m.txt. Tôi đã thêm lệnh trên SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');vào /root/m.txt
Damodar Bashyal

8

Trừ khi người quản lý gói yêu cầu bạn nhập mật khẩu gốc trong khi cài đặt, mật khẩu gốc mặc định là chuỗi trống. Để kết nối với máy chủ mới cài đặt, gõ:

shell> mysql -u root --password=
mysql>

Để thay đổi mật khẩu, hãy lấy lại shell unix và gõ:

shell> mysqladmin -u root --password= password root

Mật khẩu mới là 'root'. Bây giờ kết nối với máy chủ:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Rất tiếc, mật khẩu đã thay đổi. Sử dụng cái mới , root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Chơi lô tô! Mới làm một cái gì đó thú vị

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy


1
Bây giờ nó không sử dụng mật khẩu nhưng ổ cắm được xác thực. Vì vậy, chỉ cần thay đổi mật khẩu là không đủ tốt nữa.
Kit Ramos

7

Ngoài các câu trả lời khác, trong bản cài đặt cpanel, mật khẩu gốc mysql được lưu trữ trong một tệp có tên /root/.my.cnf. (và dịch vụ cpanel đặt lại thay đổi, vì vậy các câu trả lời khác ở đây sẽ không giúp ích)


6

bạn có thể xem mật khẩu root mysql, tôi cũng đã thử nó trên mysql 5.5 vì vậy không biết về phiên bản mới khác có hoạt động tốt hay không

nano ~/.my.cnf

4

Điều này làm việc cho tôi:

Trên thiết bị đầu cuối loại như sau

$ sudo mysql -u root -p

Nhập mật khẩu: // chỉ cần nhấn enter

mys>


Dường như máy chủ mysql không sử dụng mật khẩu auth theo mặc định nữa. bạn phải khởi động máy khách mysql như một siêu người dùng (sudo) để có quyền truy cập cho đến khi bạn thay đổi phương thức đăng nhập.
Kit Ramos

4

Mật khẩu mặc định hoạt động với tôi sau khi cài đặt ngay lập tức máy chủ mysql là: mysql


2
Có lẽ anh ta đã không trả lời câu hỏi, nhưng nhiều người đến đây có thể thấy nó giải quyết vấn đề khó khăn hơn.
Ohad Cohen

3

Quy trình thay đổi tùy thuộc vào phiên bản MySql. Thực hiện theo quy trình chính xác như được mô tả cho phiên bản của bạn:

  • HINTS - Đọc trước trang hướng dẫn cho phiên bản MySql của bạn *

  • Trong bước 5: Thay vì chạy CMD, hãy tạo một lối tắt trên máy tính để bàn của bạn gọi CDM.exe. Sau đó nhấp chuột phải vào phím tắt và chọn "Thực thi với tư cách Quản trị viên".

  • Trong bước 6: Bỏ qua phiên bản đề xuất đầu tiên của lệnh và thực thi lệnh thứ hai, phiên bản có tham số --defaults-file

  • Khi bạn thực thi lệnh, nếu mọi thứ đều ổn, cửa sổ CMD vẫn mở và lệnh của bước 6 tiếp tục thực thi. Chỉ cần đóng cửa sổ (bấm 'x'), rồi buộc đóng MySQl từ Trình quản lý tác vụ.

  • Xóa tệp bằng các lệnh SQL và bắt đầu lại MySQL. Mật khẩu phải được thay đổi ngay bây giờ.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... chỉ cần thay đổi phiên bản trong liên kết (5.5, 5.6, 5.7)


3

Trong tệp .err "tên máy chủ" trong thư mục dữ liệu MySQL hoạt động, hãy thử tìm một chuỗi bắt đầu bằng:

"Mật khẩu tạm thời được tạo cho roor @ localhost"

bạn có thể dùng

less /mysql/data/dir/hostname.err 

sau đó gạch chéo lệnh theo sau chuỗi bạn muốn tìm

/"A temporary password"

Sau đó nhấn n, để đi đến kết quả tiếp theo.



0

Hệ thống:

  • CentOS Linux 7
  • mysql Ver 14,14 Phân phối 5.7.25

Thủ tục:

  1. Mở hai phiên shell, đăng nhập vào một với tư cách là người dùng root Linux và người còn lại là người dùng nonroot có quyền truy cập vào mysqllệnh.

  2. Trong phiên gốc của bạn, hãy dừng trình nghe mysqld bình thường và khởi động trình nghe mà bỏ qua xác thực mật khẩu ( lưu ý: đây là một rủi ro bảo mật đáng kể vì bất kỳ ai có quyền truy cập vào mysql lệnh đều có thể truy cập cơ sở dữ liệu của bạn mà không cần mật khẩu. và / hoặc vô hiệu hóa quyền truy cập shell trước khi thực hiện việc này):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. Trong phiên nonroot của bạn, đăng nhập vào mysql và đặt mật khẩu gốc mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. Trong phiên gốc của bạn, tiêu diệt phiên bản không mật khẩu của mysqld và khôi phục trình nghe mysqld bình thường về dịch vụ:

    # kill %1
    # systemctl start mysqld

  5. Trong phiên nonroot của bạn, hãy kiểm tra mật khẩu root mới mà bạn đã cấu hình ở trên:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

Tôi đã giải quyết điều này theo một cách khác, điều này có thể dễ dàng hơn đối với một số người.

Tôi đã làm theo cách này vì tôi đã thử bắt đầu ở chế độ an toàn nhưng không thể kết nối với lỗi: ERROR 2002 (HY000): Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/var/run/mysqld/mysqld.sock' (2)

Những gì tôi đã làm là kết nối bình thường như root:

$ sudo mysql -u root

Sau đó, tôi đã tạo một siêu người dùng mới:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Sau đó đăng nhập với tư cách là người dùng của tôi

$ mysql -u myuser -p -h localhost

Cố gắng thay đổi mật khẩu không cho tôi lỗi nhưng không làm gì cho tôi nên tôi đã bỏ và tạo lại người dùng root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

Người dùng root hiện đang làm việc với mật khẩu mới


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.