Đặt mật khẩu gốc trong cài đặt mysql 5.7 mới


11

Tôi đang cố gắng để cài đặt mysql trong một phục vụ có CentOS Linux release 7.2.1511. Hãy xem quá trình cài đặt:

# sudo yum install mysql-server

Đầu ra:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

Tôi đã chạy damon mysql:

# sudo service mysqld start

Kiểm tra dịch vụ:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Đây là vấn đề khiến tôi phát điên. Tôi muốn đặt mật khẩu root lần đầu tiên, vì vậy tôi đã làm:

# sudo mysql_secure_installation
// when password is required, I just type "enter key"

Nhưng đầu ra: Đảm bảo triển khai máy chủ MySQL.

Nhập mật khẩu cho người dùng root: Lỗi: Truy cập bị từ chối cho người dùng 'root' @ 'localhost' (sử dụng mật khẩu: NO)

Googling lỗi, trong 90% trường hợp, giải pháp là gọi mysqld_safe --skip-grant-tables &lệnh:

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

Nhưng mysqld_safenhắc một lỗi "lệnh không tìm thấy". Tôi cũng đã thử nghiệm với sudo mysqld --skip-grant-tables &nó, nhưng nó không làm gì cả. Tôi sẽ đánh giá cao nếu bạn hướng dẫn tôi đi đúng hướng để đặt mật khẩu root. Cảm ơn bạn trước.


Cần những nhị phân để được trong PATH. Hoặc bạn cần đường dẫn đầy đủ. (Đây là câu hỏi của Linux nhiều hơn câu hỏi về MySQL.)
Rick James

Câu trả lời:


18

Nếu bạn chỉ chạy lệnh mysql dưới quyền người dùng root, bạn sẽ được cấp quyền truy cập mà không yêu cầu mật khẩu, vì xác thực ổ cắm được bật cho root @ localhost.

Hướng dẫn này là sai lệch.

Cách duy nhất để đặt mật khẩu là chuyển sang xác thực gốc như:

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

Bạn là vị cứu tinh! Làm việc như quyến rũ!.
Zugor

9

Trong nghiên cứu điên rồ của tôi cho một giải pháp, tôi đã xem /var/log/mysqld.logvà tìm thấy dòng này:

[Lưu ý] Mật khẩu tạm thời được tạo cho root @ localhost: abc123

Có vẻ như mysql 5.7+ tạo mật khẩu ngẫu nhiên trong quá trình cài đặt và được nhắc trong tệp đó.


7

Sử dụng các bước dưới đây để đặt lại mật khẩu:

$ sudo systemctl start mysqld

Đặt lại mật khẩu gốc của máy chủ MySQL.

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

Xuất ra một cái gì đó như:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

Sử dụng mật khẩu trên trong quá trình thiết lập lại mysql_secure_installation .

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

Bạn đã thiết lập lại thành công mật khẩu gốc của máy chủ MySQL. Sử dụng lệnh dưới đây để kiểm tra máy chủ MySQL có kết nối hay không.

$ mysql -u root -p

Xem bài viết của tôi: Cài đặt MySQL 5.7 mới nhất trên RHEL / Centos 7


3

Tất cả những điều trên không làm việc cho tôi và lưu ý, tôi đã dành một giờ hoặc hơn để thử tất cả các đề xuất khác từ trang web MYSql cho đến mọi thứ trên SO, cuối cùng tôi đã làm cho nó hoạt động với:

Lưu ý: trong khi nó hiển thị Nhập mật khẩu cho người dùng root, tôi không có mật khẩu gốc nên tôi chỉ nhập cùng một mật khẩu để được sử dụng làm mật khẩu mới.

Lưu ý: không có /var/log/mysqld.log chỉ /var/log/mysql/error.log

  1. giết pid mysqld hiện tại
  2. chạy mysqld với sudo / usr / sbin / mysqld &
  3. run / usr / bin / mysql_secure_installation

    Kết quả đầu ra từ mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Đảm bảo việc triển khai máy chủ MySQL.

    Nhập mật khẩu cho người dùng root:

    Có thể sử dụng PASSWORD PLUGIN để kiểm tra mật khẩu và cải thiện bảo mật. Nó kiểm tra độ mạnh của mật khẩu và cho phép người dùng chỉ đặt những mật khẩu đủ an toàn. Bạn có muốn thiết lập plugin VALIDATE PASSWORD không?

    Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không: không Sử dụng mật khẩu hiện có để root. Thay đổi mật khẩu cho root? ((Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y

    Mật khẩu mới:

    Nhập lại mật khẩu mới: Theo mặc định, cài đặt MySQL có người dùng ẩn danh, cho phép mọi người đăng nhập vào MySQL mà không cần phải tạo tài khoản người dùng cho họ. Điều này chỉ dành cho thử nghiệm và để cài đặt suôn sẻ hơn một chút. Bạn nên loại bỏ chúng trước khi chuyển sang môi trường sản xuất.

    Xóa người dùng ẩn danh? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y Thành công.

    Thông thường, root chỉ nên được phép kết nối từ 'localhost'. Điều này đảm bảo rằng ai đó không thể đoán mật khẩu gốc từ mạng.

    Không cho phép đăng nhập root từ xa? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y Thành công.

    Theo mặc định, MySQL đi kèm với một cơ sở dữ liệu có tên 'test' mà bất kỳ ai cũng có thể truy cập. Điều này cũng chỉ nhằm mục đích thử nghiệm và nên được gỡ bỏ trước khi chuyển sang môi trường sản xuất.

    Xóa cơ sở dữ liệu kiểm tra và truy cập vào nó? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y

    • Bỏ cơ sở dữ liệu kiểm tra ... Thành công.

    • Xóa đặc quyền trên cơ sở dữ liệu thử nghiệm ... Thành công.

    Tải lại các bảng đặc quyền sẽ đảm bảo rằng tất cả các thay đổi được thực hiện cho đến nay sẽ có hiệu lực ngay lập tức.

    Tải lại bảng đặc quyền bây giờ? (Nhấn y | Y cho Có, bất kỳ phím nào khác cho Không): y Thành công.

    Tất cả đã được làm xong!

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.