2011-04-15 38 views

Trả lời

121

Bạn có thể thiết lập lại mật khẩu gốc bằng cách chạy máy chủ với --skip-grant-tables và đăng nhập mà không có một mật khẩu bằng cách chạy sau khi root (hoặc với sudo):

# service mysql stop 
# mysqld_safe --skip-grant-tables & 
$ mysql -u root 

mysql> use mysql; 
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root'; 
mysql> flush privileges; 
mysql> quit 

# service mysql stop 
# service mysql start 
$ mysql -u root -p 

Bây giờ bạn sẽ có thể đăng nhập bằng mật khẩu mới của mình.

Cũng có thể tìm truy vấn đặt lại mật khẩu trong /home/$USER/.mysql_history hoặc /root/.mysql_history của người dùng đặt lại mật khẩu, nhưng điều trên sẽ luôn hoạt động.

Lưu ý: trước MySQL 5.7 cột được gọi là password thay vì authentication_string. Thay thế dòng bên trên bằng

mysql> update user set password=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root'; 
+0

Nhân tiện, tôi có nên sử dụng sudo với các lệnh này như mysqld_safe không? – Genadinik

+2

@Benjamin Tôi đã làm tất cả các bước trong câu trả lời của bạn nhưng tôi vẫn nhận được quyền truy cập bị từ chối cho người dùng 'root' @ 'localhost' - bất kỳ ý tưởng nào tại sao? – Genadinik

+0

Hmm, hãy để tôi dùng thử tại địa phương và tôi sẽ cập nhật câu trả lời với bất kỳ thứ gì tôi tìm thấy. –

1
+1

Lời giải thích có khá bối rối. Tôi đang trên Ubuntu. Nó sẽ được dễ dàng hơn để chỉ cần cài đặt lại mysql? Ban đầu tôi đã cài đặt nó từ đầu bằng cách sử dụng apt-get, nhưng nó không bao giờ được yêu cầu thiết lập mật khẩu gốc. – Genadinik

17

Tôi nhận thấy đây là một chuỗi cũ nhưng tôi nghĩ tôi nên cập nhật nó với kết quả của mình.

Alex, có vẻ như bạn đã cài đặt máy chủ MySQL qua gói 'mysql-server'. Điều này cài đặt gói mới nhất theo tham chiếu (trong trường hợp của tôi, mysql-server-5.5). Tôi, giống như bạn, đã không được nhắc nhập mật khẩu MySQL khi thiết lập như tôi mong đợi. Tôi cho rằng có hai câu trả lời:

Giải pháp # 1: cài đặt MySQL bởi nó tên đầy đủ:

$ sudo apt-get install mysql-server-5.5 

Hoặc

Giải pháp # 2: cấu hình lại gói ...

$ sudo dpkg-reconfigure mysql-server-5.5 

Bạn phải chỉ định tên gói đầy đủ. Sử dụng gói meta 'mysql-server' không có kết quả mong muốn cho tôi. Tôi hy vọng điều này sẽ giúp người :)

tham khảo: https://help.ubuntu.com/12.04/serverguide/mysql.html

+0

Nó không hoạt động – moderns

+0

Cảm ơn bạn! Tôi tiếp tục cố gắng 'sudo dpkg-reconfigure mysql-server', nhưng nó không hoạt động. –

5

MySQL 5,5 trên Ubuntu 14.04 cần lệnh hơi khác nhau theo khuyến cáo here. Tóm lại:

sudo /etc/init.d/mysql stop 
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking & 
mysql -u root 

Và sau đó từ MySQL nhắc

FLUSH PRIVILEGES; 
SET PASSWORD FOR [email protected]'localhost' = PASSWORD('password'); 
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root'; 
FLUSH PRIVILEGES; 

the cited source cung cấp một phương pháp thay thế là tốt.

+0

bạn có thể trợ giúp và cung cấp chi tiết về những gì sau đây chính xác không? '--skip-grant-tables --skip-networking &' Nó thực sự hữu ích cho tôi để giải quyết yêu cầu của khách hàng nhưng tôi muốn tìm hiểu về nó để tôi có thể lừa được rủi ro. Cảm ơn! –

+0

['skip-grant-tables'] (http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_skip-grant-tables) chắc chắn cần phải thận trọng vì bất kỳ ai có quyền truy cập vào máy chủ có thể truy cập tất cả các lược đồ cho cá thể đó. ['skip-networking'] (http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_skip-networking) là một vấn đề mà tôi nghĩ nhưng bạn nên tự mình đánh giá. Nếu tôi đang cố gắng để thiết lập lại mật khẩu gốc mà không có mật khẩu gốc hiện tại tôi xem xét bản thân mình trong một pickle bảo mật đã :). Không chắc chắn nếu có một cách tiếp cận 'an toàn' hơn. – eebbesen

+0

Tôi nhận được 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) [1] + Thoát 1 sudo/usr/sbin/mysqld - -skip-grant-tables --skip-networking –

3

Đối với RHEL-mysql 5.5:

/etc/init.d/mysql stop 

/etc/init.d/mysql start --skip-grant-tables 

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

mysql -uroot -pnewpwd 

mysql> 
+1

Bạn có thể tiết lộ chi tiết hơn một chút trong câu trả lời. Vui lòng giải thích các lệnh bạn đề xuất làm. –

0

Dưới MYSQL 5,7, Nếu bạn đang sử dụng mysql cho mục đích phát triển, chỉ cần:

1.giết mysql:

$ sudo service mysql stop 

2.start mysql dưới chế độ --skip-cấp-bảng:

$ sudo mysqld_safe --skip-grant-tables 

và, hơn nữa, bạn có thể thử thay đổi các bảng người dùng dưới "skip-cấp-bảng "chế độ, tuy nhiên tôi đã thất bại.

vì vậy, đây chỉ là giải pháp thay thế.

1

Hmm Mysql 5.7.13 để thiết lập lại tất cả những gì đã làm được:

$ sudo service mysql stop Để dừng mysql

$ mysqld_safe --skip-grant-tables & Bắt đầu mysql

$ mysql -u root

Cũng giống như câu trả lời đúng. Sau đó, tất cả những gì tôi làm là làm những gì @eebbesen đã làm.

mysql> SET PASSWORD FOR [email protected]'localhost' = PASSWORD('NEW-password-HERE');

Hy vọng nó giúp bất cứ ai ngoài kia :)

Các vấn đề liên quan