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=
5. Trên Unix, điều này có một ý nghĩa đặc biệt, như được mô tả saupassword
mydb mysql -h localhost -u myname -ppassword
mydbTên người dùng mặc định là
mysql --host=localhost --user=myname --password=
0 trên Windows hoặc tên đăng nhập Unix của bạn trên Unixpassword
mydb mysql -h localhost -u myname -ppassword
mydbKhông có mật khẩu nào được gửi vì cả
mysql --host=localhost --user=myname --password=
1 vàpassword
mydb mysql -h localhost -u myname -ppassword
mydbmysql --host=localhost --user=myname --password=
2 đều không được cung cấppassword
mydb mysql -h localhost -u myname -ppassword
mydbĐố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=
1 hoặcpassword
mydb mysql -h localhost -u myname -ppassword
mydbmysql --host=localhost --user=myname --password=
2 và chỉ định giá trị mật khẩu, không được có khoảng cách giữapassword
mydb mysql -h localhost -u myname -ppassword
mydbmysql --host=localhost --user=myname --password=
5 hoặcpassword
mydb mysql -h localhost -u myname -ppassword
mydbmysql --host=localhost --user=myname --password=
2 và mật khẩu theo sau nópassword
mydb mysql -h localhost -u myname -ppassword
mydbNếu bạn sử dụng
mysql --host=localhost --user=myname --password=
1 hoặcpassword
mydb mysql -h localhost -u myname -ppassword
mydbmysql --host=localhost --user=myname --password=
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”password
mydb mysql -h localhost -u myname -ppassword
mydbĐể 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=
9password
mydb mysql -h localhost -u myname -ppassword
mydb
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=1 hoặcpassword
mydb mysql -h localhost -u myname -ppassword
mydb
mysql --host=localhost --user=myname --password=2 mà không có bất kỳ giá trị mật khẩu nào sau đâypassword
mydb mysql -h localhost -u myname -ppassword
mydb
grep ‘temporary’ /var/log/mariadb/mariadb.log
7Khi tùy chọn
mysql --host=localhost --user=myname --password=1 hoặcpassword
mydb mysql -h localhost -u myname -ppassword
mydb
mysql --host=localhost --user=myname --password=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,password
mydb mysql -h localhost -u myname -ppassword
mydb
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=
5, kết nối với máy chủ cục bộ sẽ xảy rapassword
mydb mysql -h localhost -u myname -ppassword
mydbTrê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
76 được bật để hỗ trợ kết nối bộ nhớ dùng chunggrep ‘temporary’ /var/log/mariadb/mariadb.log
Trên Unix, các chương trình MySQL xử lý tên máy chủ
mysql --host=localhost --user=myname --password=
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ọnpassword
mydb mysql -h localhost -u myname -ppassword
mydb
78 hoặc biến môi trườnggrep ‘temporary’ /var/log/mariadb/mariadb.log
79 có thể được sử dụng để chỉ định tên ổ cắmgrep ‘temporary’ /var/log/mariadb/mariadb.log
Trên Windows, nếu
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àupdate user set password=PASSWORD['your_new_password'] where User='root';
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ốnggrep ‘temporary’ /var/log/mariadb/mariadb.log
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ốngupdate user set password=PASSWORD['your_new_password'] where User='root';
44, sẽ xảy ra lỗiupdate user set password=PASSWORD['your_new_password'] where User='root';
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=5password
mydb mysql -h localhost -u myname -ppassword
mydb
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 mysql30 đượ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
mysql31 hoặc
mysql32 để chỉ định giá trị tên máy chủ là
mysql33 [thay vì
mysql --host=localhost --user=myname --password=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ớipassword
mydb mysql -h localhost -u myname -ppassword
mydb
mysql --host=localhost --user=myname --password=5, bằng cách sử dụng tùy chọnpassword
mydb mysql -h localhost -u myname -ppassword
mydb
mysql36. ví dụ
update user set password=PASSWORD['your_new_password'] where User='root';
4Nế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
mysql37. 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
mysql38 hoặc
mysql39 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 địnhKế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=64 bằng số cổng mặc định [3306]password
mydb mysql -h localhost -u myname -ppassword
mydb
mysql3
Để 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 mysql30
mysql --host=localhost --user=myname --password=6password
mydb mysql -h localhost -u myname -ppassword
mydb
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=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ỏ quapassword
mydb mysql -h localhost -u myname -ppassword
mydb
Đố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ỏ quamysql --host=localhost --user=myname --password=2password
mydb mysql -h localhost -u myname -ppassword
mydb
Để 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=3password
mydb mysql -h localhost -u myname -ppassword
mydb
Để 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=
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àypassword
mydb mysql -h localhost -u myname -ppassword
mydbLà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ộ -pChạ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 mysqlLà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