mysql không yêu cầu mật khẩu root khi cài đặt


54

Tôi đã từng apt install mysql-servercài đặt MySQL trên Ubuntu 16.04 nhưng trong quá trình cài đặt, nó không yêu cầu mật khẩu root.

Sau khi cài đặt, tôi nhận được ERROR 1045khi cố gắng đăng nhập rootmysql_secure_installationgặp lỗi tương tự. Tôi purgeautoremoved sau đó cài đặt lại nhưng nó không hoạt động.

Làm thế nào tôi có thể sửa lỗi này? Tôi có thể đặt mật khẩu gốc nếu tôi không đặt mật khẩu trong khi cài đặt không?

Đây là nhật ký cài đặt của tôi:

Các gói bổ sung sau sẽ được cài đặt:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Gói đề xuất:
  mailx tinyca
Các gói MỚI sau đây sẽ được cài đặt:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 được nâng cấp, 6 cài đặt mới, 0 để loại bỏ và 0 không được nâng cấp.
Cần nhận 0 B / 17,9 MB tài liệu lưu trữ.
Sau thao tác này, 160 MB dung lượng đĩa bổ sung sẽ được sử dụng.
Bạn có muốn tiếp tục? [Y / n] y
Gói cấu hình sẵn ...
Chọn gói chưa được chọn trước đó libaio1: amd64.
(Đọc cơ sở dữ liệu ... 227144 tệp và thư mục hiện được cài đặt.)
Chuẩn bị giải nén ... / libaio1_0.3.110-2_amd64.deb ...
Giải nén libaio1: amd64 (0.3.110-2) ...
Chọn gói chưa được chọn trước đây mysql-client-core-5.7.
Chuẩn bị giải nén ... / mysql-client-core-5.7_5.7.12-0ubfox1_amd64.deb ...
Giải nén mysql-client-core-5.7 (5.7.12-0ubfox1) ...
Chọn gói chưa được chọn trước đó mysql-client-5.7.
Đang chuẩn bị giải nén ... / mysql-client-5.7_5.7.12-0ubfox1_amd64.deb ...
Giải nén mysql-client-5.7 (5.7.12-0ubfox1) ...
Chọn gói chưa được chọn trước đó mysql-server-core-5.7.
Chuẩn bị giải nén ... / mysql-server-core-5.7_5.7.12-0ubfox1_amd64.deb ...
Giải nén mysql-server-core-5.7 (5.7.12-0ubfox1) ...
Chọn gói chưa được chọn trước đó mysql-server-5.7.
Đang chuẩn bị giải nén ... / mysql-server-5.7_5.7.12-0ubfox1_amd64.deb ...
Giải nén mysql-server-5.7 (5.7.12-0ubfox1) ...
Chọn gói máy chủ mysql chưa được chọn trước đó.
Đang chuẩn bị giải nén ... / mysql-server_5.7.12-0ubfox1_all.deb ...
Giải nén máy chủ mysql (5.7.12-0ubfox1) ...
Xử lý các kích hoạt cho libc-bin (2.23-0ubfox3) ...
Xử lý các kích hoạt cho man-db (2.7.5-1) ...
Xử lý các kích hoạt cho systemd (229-4ubfox4) ...
Xử lý các kích hoạt cho ureadahead (0.100.0-19) ...
Thiết lập libaio1: amd64 (0.3.110-2) ...
Thiết lập mysql-client-core-5.7 (5.7.12-0ubfox1) ...
Thiết lập mysql-client-5.7 (5.7.12-0ubfox1) ...
Thiết lập mysql-server-core-5.7 (5.7.12-0ubfox1) ...
Thiết lập mysql-server-5.7 (5.7.12-0ubfox1) ...
cập nhật thay thế: sử dụng /etc/mysql/mysql.cnf để cung cấp /etc/mysql/my.cnf (my.cnf) trong chế độ tự động
Kiểm tra nếu cần cập nhật.
Bản cài đặt này của MySQL đã được nâng cấp lên 5.7.12, hãy sử dụng - Force nếu bạn vẫn cần chạy mysql_upTHER
Thiết lập máy chủ mysql (5.7.12-0ubfox1) ...
Xử lý các kích hoạt cho libc-bin (2.23-0ubfox3) ...

Câu trả lời:


60

Bạn có thể khôi phục hoặc đặt mật khẩu gốc mà không cần biết mật khẩu hiện tại bằng cách bắt đầu mysql mà không cần tải các bảng cấp.

Xin lưu ý $trong các lệnh. Đây là chỉ định nhắc nhở thiết bị đầu cuối mà bạn nhìn thấy khi gõ lệnh. Nó hiển thị nó là một dòng văn bản, nhưng và lệnh thiết bị đầu cuối được gõ thực tế. Các " mysql>" tiền tố cũng là một dấu nhắc. Đó là lời nhắc bạn nhận được khi chạy mysql tương tác.

Đây là cli (dòng lệnh) để làm điều này:
(Hãy chắc chắn dừng máy chủ hiện tại trước khi thực hiện các bước. Chỉ một máy chủ có thể chạy tại một thời điểm.)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

Bây giờ bạn có thể đăng nhập bằng root mà không cần mật khẩu và thực hiện tất cả các lệnh, như trong trường hợp này, đặt mật khẩu gốc là root.

$ sudo mysql --user=root mysql

Đây là mật khẩu gốc được thiết lập mà bạn sẽ thực hiện bên trong mysql nếu bạn có MySQL 5.6 trở xuống:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

Trong MySQL 5.7 trở lên

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

Từ đó, thoát (giết msqld đang chạy) mysql và khởi động nó như bình thường.

Lưu ý khi bắt đầu và dừng dịch vụ mysql:

Dừng mysql:

$ sudo service mysql stop

Bắt đầu mysql (bình thường):

$ sudo service mysql start

Giết phiên chế độ an toàn mysql tạm thời:

$ sudo mysqladmin shutdown

11
trong mysql 5.7.12 không có cột có tên mật khẩu trong bảng người dùng. Do đó lệnh sau làm việc cho tôi. cập nhật người dùng đặt xác thực_ chuỗi = PASSWORD ('mật khẩu mới') trong đó user = 'root';
Bộ luật

7
Tôi vẫn nhận đượcERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr 18/07/2016

@ ErelSegal-Halevi Có hai điều bạn nên làm. Chạy đi $ mysql_upgrade -u root -p. Cũng thử lệnh trên được đưa ra bởi RP Singh.
LD James

Tôi cũng vẫn nhận được lỗi này.
Jamie Hutber

SET PASSWORD FOR 'root' = PASSWORD('your-password')nếu bạn đang sử dụng mariadb
user1036719

37

Nó sẽ không yêu cầu mật khẩu trong khi cài đặt mysqltrong Ubuntu 16.04 nhưng bạn có thể đặt mật khẩu sau khi cài đặt thành công theo cách sau:

Sau khi hoàn thành cài đặt mysql, hãy chạy lệnh:

sudo mysql_secure_installation

Nó sẽ hiển thị:

LƯU Ý: CHẠY TẤT CẢ CÁC BỘ PHẬN CỦA SCRIPT NÀY ĐƯỢC KHUYẾN NGHỊ CHO TẤT CẢ CÁC DỊCH VỤ MariaDB TRONG SẢN XUẤT SỬ DỤNG! VUI LÒNG ĐỌC MACHI BƯỚC CẨN THẬN!

Để đăng nhập vào MariaDB để bảo mật nó, chúng tôi sẽ cần mật khẩu hiện tại cho người dùng root. Nếu bạn vừa cài đặt MariaDB và bạn chưa đặt mật khẩu gốc, mật khẩu sẽ trống, vì vậy bạn chỉ cần nhấn enter tại đây.

Enter current password for root (enter for none): (ở đây nhấn Enter)

OK, mật khẩu được sử dụng thành công, di chuyển trên ...

Đặt mật khẩu gốc đảm bảo rằng không ai có thể đăng nhập vào người dùng root MariaDB mà không có sự cho phép thích hợp.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

Đã cập nhật mật khẩu thành công! Đang tải lại các bảng đặc quyền .. ... Thành công!


Đối với Ubuntu 18.04 HOẶC mysql-serverphiên bản 5.7.22, PHƯƠNG PHÁP NÀY S NOT KHÔNG LÀM VIỆC

Để đặt mật khẩu gốc trong Ubuntu 18.04, Đầu tiên, hãy làm theo ba lệnh đầu tiên hoặc hai bước đầu tiên của câu trả lời của LD James sau đó chạy,

mysql> alter user 'root'@'localhost' identified by '<password>';

Mật khẩu cho người dùng root được thiết lập!

HOẶC LÀ

Thực hiện theo các bước sau để đặt mật khẩu root trong 18.04:

Vì không có mật khẩu được đặt cho người dùng root, chỉ cần đăng nhập bằng mật khẩu trống

sudo mysql -u root -p
Enter password: (press enter as no password is set)

sau đó có thể dễ dàng chạy truy vấn

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

2
Vấn đề trong trường hợp của câu hỏi này là người dùng không thể nhận được lời nhắc mà bạn đề cập vì anh ta không biết current password for root.
LD James

@LDJames có, bạn đúng. Tôi không nhớ về LRI: 1405 khi tôi chạy mysql_secure_installationnhưng sudo mysql_secure_installationlàm việc cho tôi. cài đặt mysql không yêu cầu mật khẩu. Nó cũng xảy ra với tôi như vậy. và here press entercó nghĩa là nhấn enter mà không cần mật khẩu.
cúc

2
Vì đồng thời ubfox 18.04 hoặc debian 9+, nó sẽ không kết nối với mật khẩu trống và ngay cả sau khi đặt lại pass cho root, nó vẫn từ chối kết nối
Chefarov

@chefarov Đối mặt với cùng một vấn đề, cực kỳ bực bội
RedactedProfile

Thật vậy, tôi vẫn nhận được lỗi tương tự
Jamie Hutber

16

Rõ ràng cài đặt máy chủ mysql vào ngày 16.04 (hoặc bất kỳ cài đặt 5.7 nào?) Cho phép truy cập root không thông qua mật khẩu, mà thông qua plugin auth_socket . Chạy sudo mysql -u root(mật khẩu nb w / oa) sẽ cung cấp cho bạn bảng điều khiển mysql trong khi chạy lệnh dưới dạng không root sẽ nhắc bạn nhập mật khẩu.

Có vẻ như việc thay đổi mật khẩu không tạo ra nhiều sự khác biệt vì phần phụ trợ xác thực thậm chí không kiểm tra mật khẩu. Có một bài viết rất toàn diện về cách thay đổi plugin và chuyển sang xác thực mật khẩu .


4
Tôi đã có thể xác nhận với một bản cài đặt mới apt install mysql-servermà không chỉ định mật khẩu vào ngày 18.04. Các triệu chứng và giải pháp là chính xác như mô tả.
EricC

vậy làm thế nào để tôi kết nối?
Jamie Hutber

9

Sau khi cài đặt chỉ:

1.

sudo mysql

(có, không có người dùng không vượt qua)

2.Bạn hiện đang ở trong bảng điều khiển mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

3.

FLUSH PRIVILEGES;

  1. Đó là nó. Bây giờ bạn có thể vào bảng điều khiển lần sau như bình thường:

    gốc mys -u -p my_new_pass


3
Tôi đã thử nhiều câu trả lời khác, nhưng câu trả lời này đã hoạt động trên Amazon EC2
Haris ur Rehman

2
Đây là câu trả lời đúng cho WSL Ubuntu (Linux trên Windows).
Fer García

2
Đây là câu trả lời duy nhất phù hợp với tôi trên Ubuntu 18.04 cài đặt mới trên google cloud.
Aakash

1
Làm việc cho tôi trên Ubuntu 19.04. Tôi đã chạy mysql_secure_myinstallation, nhưng có vẻ như mật khẩu gốc không được đặt.
Jens Wagemaker

1
Tôi đã thử hàng tá giải pháp. Đây là cách dễ nhất và duy nhất đã làm việc.
mreff555

4
  1. có một tài khoản người dùng mặc định.

    $ vim /etc/mysql/debian.cnf 
    

    bạn sẽ nhận được tài khoản này từ nó như thế này:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. bạn đăng nhập bằng tài khoản này

    $ mysql -u debian-sys-maint -p
    
  3. chỉnh sửa mật khẩu root của bạn

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. khởi động lại mysql

    $ /etc/init.d/mysql restart;
    

sau đó bạn có thể mysql -u root -pvới bạn cài đặt trước đó.


Tôi đã thử mọi giải pháp khác, và đây là giải pháp duy nhất phù hợp với tôi. (Bạc hà Linux 19.2).
ElectroBuddha

0

Thêm vào câu trả lời chính, Nếu bạn bị mắc kẹt tại

" mysqld_safe Bắt đầu trình nền mysqld với cơ sở dữ liệu từ / var / lib / mysql "

1 điều cần nhớ là bạn phải sử dụng một cửa sổ terminal khác để nhập lệnh sau.

$ sudo mysql --user=root mysql

Nếu bạn cố gắng thực hiện nó trong cùng một cửa sổ, nó sẽ tắt quá trình mã hóa an toàn mysqld.


-1

Đây là cách thiết lập mysql-servervới lời nhắc mật khẩu đầu cuối trong Ubuntu 18.10.

  1. Tải xuống Kho lưu trữ APT của MySQL qua https://dev.mysql.com/doads/repo/apt/
  2. cdvào thư mục của bạn nơi bạn đã tải xuống và chạy dpkg -i mysql-apt-config_0.8.13-1_all.deb(kiểm tra số phiên bản của bạn)
  3. Từ menu nhắc chọn tùy chọn cuối cùng "ok" và sau đó "ok" lần nữa.

  4. Cập nhật và cài đặt mysql-server và mysql-client:

cập nhật sudo apt
sudo apt cài đặt mysql-server mysql-client
  1. Nhập mật khẩu gốc của bạn trong promt.
  2. Chọn "Use Legacy Authentication Method"nếu các khung / ứng dụng đang chạy của bạn (chẳng hạn như laravel) chưa hỗ trợ mới "Strong Password Encryption", nếu không, nếu khung / ứng dụng của bạn hỗ trợ "Strong Password Encryption"thì hãy chọn nó.
  3. Đăng nhập với quyền root và kiểm tra nếu nó hoạt động.
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.