Làm cách nào để chuyển mật khẩu trong dòng lệnh MySQL?

Trên nhiều bản phân phối hệ điều hành, MySQL và MariaDB được khởi tạo bằng mật khẩu gốc chưa được đặt hoặc mật khẩu được đăng nhập vào nhật ký lỗi MySQL/MariaDB. Sử dụng quy trình sau để đặt mật khẩu gốc

Trong trường hợp mật khẩu gốc đã được đặt, bạn có thể tìm thấy mật khẩu tạm thời trong nhật ký lỗi MySQL/MariaDB. Để kiểm tra, hãy thử đăng nhập với quyền root bằng lệnh

mysql -uroot

Nếu cách này không hiệu quả, hãy tìm kiếm trong nhật ký lỗi MySQL/MariaDB để tìm từ 'tạm thời', như ví dụ bên dưới. Nhật ký lỗi của bạn có thể ở một vị trí khác dựa trên phiên bản hệ điều hành

grep ‘temporary’ /var/log/mariadb/mariadb.log

Dựa trên phản hồi đó, bạn sẽ có thể đăng nhập. Ví dụ: nếu mật khẩu bạn tìm thấy là 'abcdefghijk', bạn sẽ có thể đăng nhập bằng thông tin sau

Bảo mật dữ liệu là điều cần thiết đối với nhà phát triển, chủ doanh nghiệp và quản trị viên hệ thống. Một yếu tố quan trọng của việc bảo mật dữ liệu là quản lý mật khẩu. Hướng dẫn này sẽ hướng dẫn bạn cách thay đổi mật khẩu MySQL trong Linux bằng dòng lệnh

  • Một máy chủ chạy CentOS hoặc AlmaLinux
  • Quyền truy cập cấp gốc vào máy chủ

Cách thay đổi mật khẩu MySQL trên Linux thông qua dòng lệnh

Đăng nhập vào máy chủ MySQL từ dòng lệnh bằng lệnh sau

Lệnh này chỉ định người dùng root với cờ -u và cờ -p dành cho MySQL để nhắc nhập mật khẩu. Nhập mật khẩu hiện tại của bạn để hoàn tất đăng nhập

Chuyển sang cơ sở dữ liệu MySQL thích hợp bằng lệnh sau

Tiếp theo, cập nhật mật khẩu cho tất cả người dùng MySQL với tên root. Thay your_new_password bằng mật khẩu mới của bạn. Bạn có thể thay đổi mật khẩu cho bất kỳ người dùng nào bằng lệnh này bằng cách chỉ định tên người dùng thay cho từ gốc

update user set password=PASSWORD['your_new_password'] where User='root';

Cuối cùng, tải lại các đặc quyền bằng lệnh sau

Khi tất cả các bước đã hoàn thành, hãy thoát khỏi MySQL

Hoàn thành thay đổi mật khẩu MySQL trong dòng lệnh Linux giúp quản trị viên quản lý mật khẩu hiệu quả. Giảm thiểu nguy cơ vi phạm bảo mật bằng cách quản lý mật khẩu sẽ thêm một lớp bảo mật khác vào kho vũ khí của bạn

Phần này mô tả việc sử dụng các tùy chọn dòng lệnh để chỉ định cách thiết lập kết nối với máy chủ MySQL, cho các máy khách như mysql hoặc mysqldump. Để biết thêm thông tin nếu bạn không thể kết nối, hãy xem Phần 6. 2. 17, “Khắc phục sự cố khi kết nối với MySQL”

Để chương trình máy khách kết nối với máy chủ MySQL, chương trình đó phải sử dụng các tham số kết nối thích hợp, chẳng hạn như tên của máy chủ nơi máy chủ đang chạy và tên người dùng cũng như mật khẩu của tài khoản MySQL của bạn. Mỗi tham số kết nối có một giá trị mặc định, nhưng bạn có thể ghi đè các giá trị mặc định nếu cần bằng cách sử dụng các tùy chọn chương trình được chỉ định trên dòng lệnh hoặc trong tệp tùy chọn

Các ví dụ ở đây sử dụng chương trình máy khách mysql, nhưng các nguyên tắc áp dụng cho các máy khách khác như mysqldump, mysqladmin hoặc mysqlshow

Lệnh này gọi mysql mà không chỉ định bất kỳ tham số kết nối rõ ràng nào

mysql

Vì không có tùy chọn tham số nên các giá trị mặc định sẽ được áp dụng

  • Tên máy chủ mặc định là

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    5. Trên Unix, điều này có một ý nghĩa đặc biệt, như được mô tả sau

  • Tên người dùng mặc định là

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    0 trên Windows hoặc tên đăng nhập Unix của bạn trên Unix

  • Không có mật khẩu nào được gửi vì cả

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    1 và
    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    2 đều không được cung cấp

  • Đối với mysql, đối số nonoption đầu tiên được lấy làm tên của cơ sở dữ liệu mặc định. Bởi vì không có đối số như vậy, mysql chọn không có cơ sở dữ liệu mặc định

Để chỉ định rõ ràng tên máy chủ và tên người dùng, cũng như mật khẩu, hãy cung cấp các tùy chọn thích hợp trên dòng lệnh. Để chọn cơ sở dữ liệu mặc định, hãy thêm đối số tên cơ sở dữ liệu. ví dụ

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb

Đối với các tùy chọn mật khẩu, giá trị mật khẩu là tùy chọn

  • Nếu bạn sử dụng tùy chọn

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    1 hoặc
    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    2 và chỉ định giá trị mật khẩu, không được có khoảng cách giữa
    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    5 hoặc
    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    2 và mật khẩu theo sau nó

  • Nếu bạn sử dụng

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    1 hoặc
    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    2 nhưng không chỉ định giá trị mật khẩu, chương trình máy khách sẽ nhắc bạn nhập mật khẩu. Mật khẩu không được hiển thị khi bạn nhập nó. Điều này an toàn hơn là cung cấp mật khẩu trên dòng lệnh, điều này có thể cho phép những người dùng khác trên hệ thống của bạn nhìn thấy dòng mật khẩu bằng cách thực hiện một lệnh chẳng hạn như ps. Xem Phần 6. 1. 2. 1, “Hướng dẫn người dùng cuối về bảo mật mật khẩu”

  • Để xác định rõ ràng rằng không có mật khẩu và chương trình máy khách sẽ không nhắc mật khẩu, hãy sử dụng tùy chọn

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    9

Như vừa đề cập, bao gồm giá trị mật khẩu trên dòng lệnh là một rủi ro bảo mật. Để tránh rủi ro này, hãy chỉ định tùy chọn

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
1 hoặc
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
2 mà không có bất kỳ giá trị mật khẩu nào sau đây

grep ‘temporary’ /var/log/mariadb/mariadb.log
7

Khi tùy chọn

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
1 hoặc
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
2 được cung cấp mà không có giá trị mật khẩu, chương trình máy khách sẽ in lời nhắc và đợi bạn nhập mật khẩu. [Trong các ví dụ này,
grep ‘temporary’ /var/log/mariadb/mariadb.log
74 không được hiểu là mật khẩu vì nó được phân tách khỏi tùy chọn mật khẩu trước đó bằng dấu cách. ]

Trên một số hệ thống, quy trình thư viện mà MySQL sử dụng để nhắc nhập mật khẩu sẽ tự động giới hạn mật khẩu ở tám ký tự. Giới hạn đó là thuộc tính của thư viện hệ thống, không phải MySQL. Trong nội bộ, MySQL không có bất kỳ giới hạn nào về độ dài của mật khẩu. Để khắc phục giới hạn trên các hệ thống bị ảnh hưởng bởi nó, hãy chỉ định mật khẩu của bạn trong tệp tùy chọn [xem Phần 4. 2. 2. 2, “Sử dụng tệp tùy chọn”]. Một cách giải quyết khác là thay đổi mật khẩu MySQL của bạn thành một giá trị có tám ký tự trở xuống, nhưng điều đó có nhược điểm là mật khẩu ngắn hơn có xu hướng kém an toàn hơn

Các chương trình máy khách xác định loại kết nối sẽ thực hiện như sau

  • Nếu máy chủ không được chỉ định hoặc là

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    5, kết nối với máy chủ cục bộ sẽ xảy ra

    • Trên Windows, máy khách kết nối bằng bộ nhớ dùng chung, nếu máy chủ được khởi động với biến hệ thống

      grep ‘temporary’ /var/log/mariadb/mariadb.log
      76 được bật để hỗ trợ kết nối bộ nhớ dùng chung

    • Trên Unix, các chương trình MySQL xử lý tên máy chủ

      mysql --host=localhost --user=myname --password=password mydb
      mysql -h localhost -u myname -ppassword mydb
      
      5 một cách đặc biệt, theo cách có thể khác với những gì bạn mong đợi so với các chương trình dựa trên mạng khác. máy khách kết nối bằng tệp ổ cắm Unix. Tùy chọn
      grep ‘temporary’ /var/log/mariadb/mariadb.log
      78 hoặc biến môi trường
      grep ‘temporary’ /var/log/mariadb/mariadb.log
      79 có thể được sử dụng để chỉ định tên ổ cắm

  • Trên Windows, nếu

    update user set password=PASSWORD['your_new_password'] where User='root';
    40 là
    update user set password=PASSWORD['your_new_password'] where User='root';
    41 [dấu chấm] hoặc TCP/IP không được bật và
    grep ‘temporary’ /var/log/mariadb/mariadb.log
    78 không được chỉ định hoặc máy chủ lưu trữ trống, thì máy khách sẽ kết nối bằng đường ống có tên, nếu máy chủ được khởi động với biến hệ thống
    update user set password=PASSWORD['your_new_password'] where User='root';
    43 được bật để hỗ trợ . Nếu các kết nối ống dẫn có tên không được hỗ trợ hoặc nếu người dùng tạo kết nối không phải là thành viên của nhóm Windows được chỉ định bởi biến hệ thống
    update user set password=PASSWORD['your_new_password'] where User='root';
    44, sẽ xảy ra lỗi

  • Mặt khác, kết nối sử dụng TCP/IP

Tùy chọn

update user set password=PASSWORD['your_new_password'] where User='root';
45 cho phép bạn sử dụng một giao thức vận chuyển cụ thể ngay cả khi các tùy chọn khác thường dẫn đến việc sử dụng một giao thức khác. Nghĩa là,
update user set password=PASSWORD['your_new_password'] where User='root';
45 chỉ định giao thức vận chuyển một cách rõ ràng và ghi đè các quy tắc trước đó, ngay cả đối với
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
5

Chỉ các tùy chọn kết nối có liên quan đến giao thức vận chuyển đã chọn mới được sử dụng hoặc kiểm tra. Các tùy chọn kết nối khác bị bỏ qua. Ví dụ: với

update user set password=PASSWORD['your_new_password'] where User='root';
48 trên Unix, máy khách cố gắng kết nối với máy chủ cục bộ bằng tệp ổ cắm Unix, ngay cả khi tùy chọn
update user set password=PASSWORD['your_new_password'] where User='root';
49 hoặc
mysql
30 được cung cấp để chỉ định số cổng TCP/IP

Để đảm bảo rằng máy khách tạo kết nối TCP/IP với máy chủ cục bộ, hãy sử dụng

mysql
31 hoặc
mysql
32 để chỉ định giá trị tên máy chủ là
mysql
33 [thay vì
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
5] hoặc địa chỉ IP hoặc tên của máy chủ cục bộ. Bạn cũng có thể chỉ định giao thức vận chuyển một cách rõ ràng, ngay cả đối với
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
5, bằng cách sử dụng tùy chọn
mysql
36. ví dụ

update user set password=PASSWORD['your_new_password'] where User='root';
4

Nếu máy chủ được định cấu hình để chấp nhận kết nối IPv6, máy khách có thể kết nối với máy chủ cục bộ qua IPv6 bằng cách sử dụng

mysql
37. Xem Phần 5. 1. 12, “Hỗ trợ IPv6”

Trên Windows, để buộc máy khách MySQL sử dụng kết nối ống dẫn có tên, hãy chỉ định tùy chọn

mysql
38 hoặc
mysql
39 hoặc chỉ định
update user set password=PASSWORD['your_new_password'] where User='root';
41 [dấu chấm] làm tên máy chủ. Nếu máy chủ không được khởi động với biến hệ thống
update user set password=PASSWORD['your_new_password'] where User='root';
43 được bật để hỗ trợ các kết nối ống dẫn có tên hoặc nếu người dùng tạo kết nối không phải là thành viên của nhóm Windows được chỉ định bởi biến hệ thống
update user set password=PASSWORD['your_new_password'] where User='root';
44, thì sẽ xảy ra lỗi. Sử dụng tùy chọn
grep ‘temporary’ /var/log/mariadb/mariadb.log
78 để chỉ định tên của đường ống nếu bạn không muốn sử dụng tên đường ống mặc định

Kết nối với máy chủ từ xa sử dụng TCP/IP. Lệnh này kết nối với máy chủ chạy trên

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
64 bằng số cổng mặc định [3306]

mysql
3

Để chỉ định rõ ràng số cổng, hãy sử dụng tùy chọn

update user set password=PASSWORD['your_new_password'] where User='root';
49 hoặc
mysql
30

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
6

Bạn cũng có thể chỉ định số cổng cho các kết nối đến máy chủ cục bộ. Tuy nhiên, như đã chỉ ra trước đó, các kết nối tới

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
5 trên Unix sử dụng tệp ổ cắm theo mặc định, vì vậy trừ khi bạn buộc kết nối TCP/IP như được mô tả trước đây, mọi tùy chọn chỉ định số cổng đều bị bỏ qua

Đối với lệnh này, chương trình sử dụng tệp ổ cắm trên Unix và tùy chọn

update user set password=PASSWORD['your_new_password'] where User='root';
49 bị bỏ qua

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
2

Để sử dụng số cổng, hãy buộc kết nối TCP/IP. Ví dụ: gọi chương trình theo một trong hai cách sau

mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
3

Để biết thêm thông tin về các tùy chọn kiểm soát cách chương trình máy khách thiết lập kết nối với máy chủ, hãy xem Phần 4. 2. 3, “Tùy chọn lệnh để kết nối với máy chủ”

Có thể chỉ định các tham số kết nối mà không cần nhập chúng vào dòng lệnh mỗi khi bạn gọi một chương trình máy khách

  • Chỉ định các tham số kết nối trong phần

    mysql --host=localhost --user=myname --password=password mydb
    mysql -h localhost -u myname -ppassword mydb
    
    69 của tệp tùy chọn. Phần có liên quan của tệp có thể trông như thế này

    Làm cách nào để cung cấp mật khẩu MySQL trong dòng lệnh?

    Mysql thay đổi mật khẩu người dùng bằng phương pháp sau. .
    Mở bash shell và kết nối với máy chủ với tư cách người dùng root. mysql -u gốc -h máy chủ cục bộ -p
    Chạy lệnh ALTER mysql. THAY ĐỔI NGƯỜI DÙNG 'userName'@'localhost' ĐƯỢC XÁC ĐỊNH BỞI 'New-Password-Here';
    Cuối cùng gõ lệnh SQL để tải lại các bảng cấp trong cơ sở dữ liệu mysql

    Làm cách nào để mở MySQL bằng mật khẩu?

    Nhập mysql. exe -uroot -p và MySQL sẽ khởi chạy bằng người dùng root. MySQL sẽ nhắc bạn nhập mật khẩu của bạn. Nhập mật khẩu từ tài khoản người dùng mà bạn đã chỉ định bằng thẻ –u và bạn sẽ kết nối với máy chủ MySQL.

    Làm cách nào để chuyển mật khẩu trong tập lệnh Shell cho MySQL?

    Đăng nhập vào MySQL shell với quyền root. Truy cập trình bao MySQL bằng cách nhập lệnh sau và nhập mật khẩu người dùng root MySQL của bạn khi được nhắc. mysql -u root -p . Đặt mật khẩu người dùng MySQL. Xác minh mật khẩu mới.

    Làm cách nào để sử dụng chức năng mật khẩu trong MySQL?

    MySQL sử dụng mật khẩu trong hai giai đoạn giao tiếp máy khách/máy chủ. Khi máy khách cố gắng kết nối với máy chủ, có một bước xác thực ban đầu, trong đó máy khách phải xuất trình mật khẩu có giá trị băm khớp với giá trị băm được lưu trữ trong bảng người dùng cho tài khoản mà máy khách muốn sử dụng

Chủ Đề