Xác thực người dùng mysql

Bạn có thể xác thực phiên bản CSDL của mình bằng xác thực cơ sở dữ liệu AWS Identity and Access Management (IAM). Xác thực cơ sở dữ liệu IAM hoạt động với MariaDB, MySQL và PostgreSQL. Với phương thức xác thực này, bạn không cần sử dụng mật khẩu khi kết nối với phiên bản CSDL. Thay vào đó, bạn sử dụng mã thông báo xác thực

Show

Mã thông báo xác thực là một chuỗi ký tự duy nhất mà Amazon RDS tạo theo yêu cầu. Mã thông báo xác thực được tạo bằng AWS Signature Phiên bản 4. Mỗi mã thông báo có thời gian tồn tại là 15 phút. Bạn không cần lưu trữ thông tin đăng nhập của người dùng trong cơ sở dữ liệu vì quá trình xác thực được quản lý bên ngoài bằng IAM. Bạn vẫn có thể sử dụng xác thực cơ sở dữ liệu tiêu chuẩn. Mã thông báo chỉ được sử dụng để xác thực và không ảnh hưởng đến phiên sau khi được thiết lập

Xác thực cơ sở dữ liệu IAM cung cấp các lợi ích sau

  • Lưu lượng mạng đến và đi từ cơ sở dữ liệu được mã hóa bằng Lớp cổng bảo mật (SSL) hoặc Bảo mật lớp vận chuyển (TLS). Để biết thêm thông tin về cách sử dụng SSL/TLS với Amazon RDS, xem Sử dụng SSL/TLS để mã hóa kết nối đến phiên bản CSDL

  • Bạn có thể sử dụng IAM để quản lý tập trung quyền truy cập vào tài nguyên cơ sở dữ liệu của mình, thay vì quản lý quyền truy cập riêng lẻ trên từng phiên bản CSDL

  • Đối với các ứng dụng chạy trên Amazon EC2, bạn có thể sử dụng thông tin xác thực hồ sơ dành riêng cho phiên bản EC2 của mình để truy cập cơ sở dữ liệu thay vì mật khẩu, để tăng cường bảo mật

Nói chung, hãy cân nhắc sử dụng xác thực cơ sở dữ liệu IAM khi ứng dụng của bạn tạo ít hơn 200 kết nối mỗi giây và bạn không muốn quản lý tên người dùng và mật khẩu trực tiếp trong mã ứng dụng của mình

Trình điều khiển AWS JDBC dành cho MySQL hỗ trợ xác thực cơ sở dữ liệu IAM. Để biết thêm thông tin, hãy xem trong kho lưu trữ AWS JDBC Driver cho MySQL GitHub

Khu vực và phiên bản sẵn có

Tính khả dụng và hỗ trợ khác nhau giữa các phiên bản cụ thể của từng công cụ cơ sở dữ liệu và trên các Khu vực AWS. Để biết thêm thông tin về tính khả dụng của phiên bản và Khu vực với xác thực cơ sở dữ liệu IAM và Amazon RDS, hãy xem Xác thực cơ sở dữ liệu IAM

Hỗ trợ CLI và SDK

Xác thực cơ sở dữ liệu IAM khả dụng cho AWS CLI và cho AWS SDK dành riêng cho ngôn ngữ sau

Hạn chế đối với xác thực cơ sở dữ liệu IAM

Khi sử dụng xác thực cơ sở dữ liệu IAM, các giới hạn sau sẽ áp dụng

  • Số lượng kết nối tối đa mỗi giây cho phiên bản CSDL của bạn có thể bị giới hạn tùy thuộc vào loại phiên bản CSDL và khối lượng công việc của bạn

  • Hiện tại, xác thực cơ sở dữ liệu IAM không hỗ trợ tất cả các khóa ngữ cảnh điều kiện chung

    Để biết thêm thông tin về các khóa ngữ cảnh điều kiện toàn cầu, hãy xem Các khóa ngữ cảnh điều kiện toàn cầu AWS trong Hướng dẫn sử dụng IAM

  • Đối với PostgreSQL, nếu vai trò IAM (_______129_______) được thêm vào người dùng (bao gồm cả người dùng chính RDS), xác thực IAM sẽ được ưu tiên hơn xác thực mật khẩu, vì vậy người dùng phải đăng nhập với tư cách người dùng

Các đề xuất về xác thực cơ sở dữ liệu IAM

Chúng tôi khuyến nghị những điều sau đây khi sử dụng xác thực cơ sở dữ liệu IAM

  • Sử dụng xác thực cơ sở dữ liệu IAM làm cơ chế truy cập tạm thời, cá nhân vào cơ sở dữ liệu

  • Sử dụng xác thực cơ sở dữ liệu IAM khi ứng dụng của bạn yêu cầu ít hơn 200 kết nối xác thực cơ sở dữ liệu IAM mới mỗi giây

    Công cụ cơ sở dữ liệu hoạt động với Amazon RDS không áp đặt bất kỳ giới hạn nào đối với số lần xác thực mỗi giây. Tuy nhiên, khi bạn sử dụng xác thực cơ sở dữ liệu IAM, ứng dụng của bạn phải tạo mã thông báo xác thực. Sau đó, ứng dụng của bạn sẽ sử dụng mã thông báo đó để kết nối với phiên bản CSDL. Nếu bạn vượt quá giới hạn số lượng kết nối mới tối đa mỗi giây, thì chi phí xác thực cơ sở dữ liệu IAM tăng thêm có thể gây ra hiện tượng tắc nghẽn kết nối

    Xác thực và ủy quyền là những yêu cầu quan trọng trong phương pháp bảo mật của MySQL. Cùng nhau, chúng hoạt động như bộ điều khiển kiểm soát truy cập của hệ thống bằng cách điều chỉnh ai có thể kết nối với máy chủ, cấu trúc nào họ có thể nhìn thấy và tương tác cũng như dữ liệu nào họ có quyền truy cập. Hiểu cách các hệ thống này tương tác có thể giúp bạn định cấu hình các chính sách bảo mật để bảo vệ dữ liệu của bạn trong khi không bị cản trở tất cả các hành động hợp pháp

    Quản lý người dùng là trách nhiệm quan trọng nhất của bất kỳ ai hy vọng quản lý hệ thống cơ sở dữ liệu. Việc tạo, thay đổi và xóa tài khoản người dùng để thể hiện tốt nhất người dùng và dịch vụ trong môi trường của bạn giúp đặt nền tảng cho việc khóa quyền truy cập, giới hạn phạm vi thay đổi cũng như thực hiện kiểm toán và chịu trách nhiệm đối với các sửa đổi

    Trong hướng dẫn này, chúng tôi sẽ nói về cách quản lý tài khoản người dùng trong MySQL. Trước tiên, chúng tôi sẽ thảo luận về người dùng hợp lệ trong MySQL là gì và chỉ cho bạn cách thêm người dùng bổ sung vào hệ thống. Điều này dẫn đến một cuộc thảo luận về cách định cấu hình cho từng người dùng và cách hệ thống chọn tùy chọn xác thực từ danh sách các khả năng. Chúng ta sẽ tiếp tục nói về việc thay đổi người dùng hiện có, cách đăng nhập bằng tài khoản bạn đã tạo và cách xóa người dùng mà bạn không cần nữa

    điều kiện tiên quyết

    Để làm theo hướng dẫn này, bạn sẽ cần có một tài khoản trên máy chủ MySQL với các đặc quyền thích hợp

    Các lệnh chúng ta sẽ sử dụng

    Để tạo, sửa đổi và xóa người dùng trong MySQL, các lệnh cốt lõi bạn cần là

    • CREATE USER '<user>'@'<host>';

      4. tạo tài khoản người dùng mới
    • CREATE USER '<user>'@'<host>';

      5. thực hiện các thay đổi đối với tài khoản người dùng hiện có
    • CREATE USER '<user>'@'<host>';

      6. xóa tài khoản người dùng hiện tại

    đặc quyền bắt buộc

    Để thực hiện các lệnh trên, bạn cần đăng nhập vào MySQL bằng tài khoản có quyền

    CREATE USER '<user>'@'<host>';

    4. Đặc quyền

    CREATE USER '<user>'@'<host>';

    4 cho phép bạn tạo, sửa đổi, xóa và đổi tên người dùng, trong số các hành động khác. Chúng tôi cũng sẽ cần đặc quyền

    CREATE USER '<user>'@'<host>';

    9 trên cơ sở dữ liệu

    CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

    0 để xem thông tin về người dùng hiện có

    Theo thứ tự ưu tiên, bạn nên đăng nhập bằng cách sử dụng

    • Một tài khoản giới hạn có đặc quyền

      CREATE USER '<user>'@'<host>';

      4 và đặc quyền

      CREATE USER '<user>'@'<host>';

      9 trên cơ sở dữ liệu

      CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

      0
    • CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

      4 hoặc người dùng quản trị có đầy đủ đặc quyền trong MySQL

    Hiểu cách MySQL xác định và diễn giải tài khoản người dùng

    Trước khi chúng tôi bắt đầu tạo tài khoản mới, sẽ rất hữu ích nếu bạn dành chút thời gian để làm quen với các cách khác nhau mà MySQL sử dụng để tạo và giới thiệu người dùng. Bạn cũng cần làm quen với thuật toán xác thực của MySQL để hiểu tài khoản người dùng nào nó sẽ sử dụng để xác thực các kết nối

    Cú pháp của MySQL cho tài khoản người dùng là gì?

    Trong MySQL, tài khoản người dùng bao gồm hai phần thông tin riêng biệt, được nối với nhau bằng dấu (@)

    • Tên người dùng
    • Máy chủ mà người dùng đang kết nối từ

    Nhìn chung, tài khoản người dùng trên hệ thống sẽ có dạng như sau

    '<user>'@'<host>'

Dấu nháy đơn có thể được sử dụng, như trên, để bọc riêng từng thành phần người dùng và máy chủ của tài khoản người dùng. Đôi khi chúng cần thiết nếu một trong hai thành phần chứa các ký tự mà nếu không sẽ bị hiểu sai. Nói chung, thêm chúng luôn là một ý tưởng tốt để rõ ràng

Vì vậy, thay vì chỉ có một tài khoản tên là

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

5, trong MySQL, tên tài khoản đầy đủ sẽ yêu cầu một số loại máy chủ lưu trữ, chẳng hạn như

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

6. Điều này có nghĩa là có thể có nhiều

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

5 tài khoản trên hệ thống và MySQL sẽ xem mỗi tài khoản đó là một tài khoản duy nhất miễn là chúng đến từ một miền khác

Với tất cả những gì đã nói, có thể xác định tài khoản người dùng không có thành phần người dùng hoặc máy chủ lưu trữ, nhưng có những hàm ý quan trọng mà bạn phải biết

Bạn có thể xác định tài khoản người dùng mà không có giá trị người dùng bằng cách sử dụng một chuỗi rỗng

''@'<host>'

Chẳng hạn, bạn có thể tạo người dùng là

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

8. Người dùng này sẽ khớp với bất kỳ tên người dùng nào kết nối từ máy tính cục bộ

Tương tự như vậy, bạn có thể có tài khoản người dùng khớp với bất kỳ máy chủ nào. Thay vì sử dụng một chuỗi trống, đối với các giá trị máy chủ, bạn sẽ sử dụng ký tự đại diện

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

9, như thế này

'<user>'@'%'

Ví dụ: nếu bạn tạo

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

0, tài khoản đó sẽ khớp với người dùng

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

5 kết nối từ bất kỳ máy chủ nào

MySQL xác thực người dùng như thế nào?

Hiểu cách MySQL thực sự xử lý từng yêu cầu xác thực là rất quan trọng để tránh một loại vấn đề xác thực phổ biến do các giả định hợp lý nhưng không chính xác. Điều này đã được thảo luận ở một số chiều sâu trong của chúng tôi

Khi xác thực một yêu cầu kết nối, MySQL sử dụng một số trường trong bảng

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

2 của cơ sở dữ liệu

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

0 nội bộ của nó để quyết định có cho phép kết nối hay không. MySQL sẽ sử dụng tối đa một bản ghi tài khoản người dùng để cố xác thực kết nối. Điều này có nghĩa là MySQL cần một cách để quyết định sử dụng tài khoản người dùng nào nếu có nhiều hơn một tài khoản có thể khớp với một kết nối

Thuật toán xác thực người dùng của MySQL bắt đầu khi máy chủ khởi động. Khi khởi động, MySQL tải toàn bộ bảng

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

4 vào bộ nhớ. Nó cũng làm điều này bất cứ khi nào tài khoản người dùng được tạo bằng các lệnh MySQL thông thường. Khi tải bảng, nó sẽ sắp xếp các mục từ ưu tiên cao nhất đến thấp nhất

MySQL sử dụng cột

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

5 làm trường sắp xếp chính và ưu tiên các kết quả có giá trị cụ thể hơn. Vì vậy, các giá trị theo nghĩa đen được sắp xếp ở trên cùng với mức độ ưu tiên cao nhất và những giá trị sử dụng ký tự đại diện, như

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

9, được sắp xếp ở dưới cùng. Các mục cuối cùng là những mục chỉ chứa

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

9 không có ký tự nào khác, tiếp theo là các mục có máy chủ trống hoàn toàn

Cột

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

8 được sử dụng làm trường sắp xếp phụ cho bất kỳ mục nhập nào có cùng giá trị

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

5. Một lần nữa, các trận đấu chính xác hơn được ưu tiên. Vì cột

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

8 không thể sử dụng ký tự đại diện, nên tất cả các mục nhập đều bình đẳng ngoại trừ những mục nhập có giá trị

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

8 trống. Chúng được sắp xếp xuống dưới cùng. Nếu bất kỳ mục nhập nào có giá trị

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

8 trống được chọn, người dùng sẽ được xác thực là "người dùng ẩn danh", điều này thường tương đương với việc không có đặc quyền

Bây giờ, bất cứ khi nào yêu cầu kết nối được thực hiện, MySQL sẽ đi qua bảng được sắp xếp trong bộ nhớ từ trên xuống dưới. Nó sử dụng mục nhập đầu tiên mà nó tìm thấy để xác thực người dùng, bất kể có mục nhập nào khác cũng khớp hay không. Nếu máy khách không thể xác thực bằng phương pháp được xác định bởi mục đó, thì kết nối sẽ không thành công và không có mục nào khác được kiểm tra

Ý nghĩa của việc không bao gồm người dùng hoặc máy chủ lưu trữ trong định nghĩa tài khoản người dùng MySQL là gì?

Do thuật toán xác thực của MySQL, các sự cố có thể xuất hiện nếu bạn không cẩn thận khi tạo tài khoản người dùng mà không có thành phần người dùng hoặc máy chủ lưu trữ. Điều này là do cách MySQL quyết định sử dụng bản ghi nào để xác thực bạn có thể không trực quan và gây ngạc nhiên

Chẳng hạn, nếu người dùng xác thực với MySQL với phần người dùng dưới dạng chuỗi trống, MySQL sẽ coi họ là "người dùng ẩn danh" trong phần còn lại của phiên. Theo quy định, người dùng ẩn danh hầu như không có quyền lực và có thể làm rất ít sau khi được kết nối. Thậm chí có thể vô tình xác thực là người dùng ẩn danh khi cố xác thực bằng tài khoản người dùng khác

Thách thức với việc sử dụng máy chủ ký tự đại diện cho tài khoản người dùng là các tài khoản người dùng khác bao gồm giá trị máy chủ lưu trữ có thể dễ dàng che giấu hoặc làm cho tài khoản người dùng sử dụng ký tự đại diện không khả dụng

Ví dụ: nếu bạn có tài khoản người dùng được xác định là

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

3, bạn có thể mong đợi có thể xác thực với

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

4 từ bất kỳ máy chủ nào. Tuy nhiên, nếu bạn có tài khoản người dùng với một người dùng trống nhưng giá trị máy chủ phù hợp với máy chủ mà

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

4 đang kết nối từ đó, thì thay vào đó, MySQL sẽ xác thực bằng tài khoản đó (dẫn đến đăng nhập người dùng ẩn danh như mô tả ở trên)

Vì vậy, ví dụ, MySQL sẽ sắp xếp các tài khoản sau theo thứ tự sau

Mức độ ưu tiênTài khoản MySQLNhận xét1

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

6 và

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

7Những thứ này có mức độ ưu tiên ngang nhau, điều này không sao vì chỉ một trong số chúng có thể khớp với kết nối. 2______6_______8 và

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

9Hai mục này, một lần nữa có cùng mức độ ưu tiên. Vì chúng không có thành phần người dùng, nhưng chúng có thành phần máy chủ theo nghĩa đen, nên chúng được đặt ở cuối các mục có giá trị máy chủ chính xác. 3

mysql

0Mục nhập này có một ký tự đại diện trong thành phần máy chủ, do đó, nó được ưu tiên thấp hơn các mục nhập có giá trị máy chủ chính xác. 4

mysql

1Mục nhập này được nhóm với các mục nhập có ký tự đại diện trong giá trị máy chủ của chúng. Vì nó không có thành phần người dùng nên nó nằm cuối nhóm này. 5

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

3Mục nhập này có giá trị máy chủ chỉ bao gồm một ký tự đại diện. Vì nó khớp với bất kỳ máy chủ nào nên nó có mức độ ưu tiên rất thấp. 7

mysql

3Mục nhập này có thể được sử dụng để xác thực bất kỳ người dùng nào từ bất kỳ máy chủ nào với tư cách là người dùng ẩn danh. Nó có mức độ ưu tiên cực thấp vì nó phù hợp với bất kỳ kết nối nào. 6______39_______4Mục nhập này có giá trị máy chủ hoàn toàn trống, giá trị này thậm chí còn có mức độ ưu tiên thấp hơn so với máy chủ chỉ chứa ký tự đại diện. 8

mysql

5Đây là người dùng có mức độ ưu tiên thấp nhất có thể. Nó không chứa thông tin máy chủ nên nó được đặt ở cuối trong quá trình sắp xếp máy chủ. Vì nó cũng chứa một người dùng trống nên nó được đặt bên dưới các mục nhập khác trong nhóm này. Giống như tất cả các mục không có người dùng, các kết nối được xác thực bằng mục này sẽ được đăng nhập với tư cách là người dùng ẩn danh

Làm thế nào để bạn tạo người dùng?

Bây giờ bạn đã có cảm giác về cách MySQL xử lý tài khoản người dùng, chúng ta có thể bắt đầu tạo một số người dùng mới. Hãy nhớ đăng nhập với người dùng có đặc quyền được mô tả trong

Cú pháp cơ bản

Cú pháp cơ bản để tạo người dùng mới tương đối đơn giản. Bạn sử dụng lệnh

CREATE USER '<user>'@'<host>';

4 sau đó chỉ định người dùng và máy chủ cho tài khoản mới

CREATE USER '<user>'@'<host>';

Điều này sẽ tạo một tài khoản cơ bản mà không cần định cấu hình bất kỳ chi tiết nào ngoài người dùng và máy chủ lưu trữ khi tạo

Làm thế nào để bạn tạo một người dùng với một mật khẩu?

Thông thường, bạn muốn định cấu hình xác thực trong khi tạo người dùng. Bạn có thể làm điều này bằng cách thêm mệnh đề tùy chọn

mysql

7 vào câu lệnh

CREATE USER '<user>'@'<host>';

4

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

Thao tác này sẽ tạo một tài khoản người dùng mới, như trước đây và đồng thời gán mật khẩu cho tài khoản đó. Chúng tôi sẽ đề cập đến cách chỉ định mật khẩu sau thực tế hoặc cách thay đổi mật khẩu của người dùng sau này

Làm cách nào để bạn tạo người dùng với xác thực ổ cắm Unix?

Mặc dù xác thực bằng mật khẩu là phương thức xác thực phổ biến nhất đối với hầu hết người dùng nhưng đây không phải là tùy chọn duy nhất. MySQL cung cấp nhiều cơ chế xác thực bên trong và bên ngoài khác nhau mà bạn có thể định cấu hình cho tài khoản người dùng của mình để sử dụng. Ví dụ: chúng tôi sẽ định cấu hình tài khoản mới bằng cách sử dụng xác thực ổ cắm Unix

Xác thực ổ cắm Unix có thể được sử dụng trong môi trường giống Linux hoặc Unix để tài khoản trên hệ điều hành được cấp quyền truy cập vào cùng tên tài khoản trong MySQL mà không cần xác thực thêm. Trong cấu hình này, quản trị viên MySQL biết rằng tài khoản người dùng trên hệ điều hành được kiểm soát chặt chẽ

Vì vậy, nếu có người dùng

mysql

9 trên hệ điều hành, họ sẽ có thể đăng nhập vào tài khoản

SELECT user,host,plugin FROM mysql.user

0 trong MySQL nếu xác thực ổ cắm Unix là cơ chế xác thực được xác định. Hãy cấu hình cái này ngay bây giờ

Xác thực ổ cắm yêu cầu plugin

SELECT user,host,plugin FROM mysql.user

1, vì vậy trước tiên hãy tải plugin bằng cách nhập

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

Tiếp theo, tạo tài khoản người dùng khớp với tài khoản người dùng bạn có trên hệ điều hành của mình. Đối với ví dụ này, chúng tôi sẽ sử dụng tài khoản

mysql

9 mà chúng tôi đã thảo luận ở trên. Nếu bạn không sử dụng tên khớp với một trong các tên hệ điều hành của mình, bạn sẽ không thể xác thực bằng người dùng này

Để tạo người dùng với xác thực socket, chúng ta cần sử dụng mệnh đề

SELECT user,host,plugin FROM mysql.user

3 (khác với mệnh đề

mysql

7 được sử dụng trước đó) để chỉ định plugin xác thực sẽ sử dụng

CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;

Bây giờ, bạn sẽ có thể xác thực với người dùng MySQL

SELECT user,host,plugin FROM mysql.user

0 từ người dùng

mysql

9 trên hệ điều hành của bạn. Khi đăng nhập với tên

mysql

9, hãy kết nối với cơ sở dữ liệu mà không cần cung cấp bất kỳ tên người dùng hoặc mật khẩu nào

mysql

Bạn sẽ được đăng nhập tự động thông qua xác thực ổ cắm Unix mà bạn đã định cấu hình

Làm thế nào để bạn hiển thị người dùng hiện tại?

Tiếp theo, chúng ta hãy xem cách tìm thông tin về người dùng hiện có

Để hiển thị tất cả những người dùng MySQL hiện có, bao gồm thành phần người dùng và máy chủ của họ, cũng như plugin xác thực họ hiện đang sử dụng, bạn có thể

CREATE USER '<user>'@'<host>';

9 các trường đó từ cơ sở dữ liệu

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

4

SELECT user,host,plugin FROM mysql.user

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

Ở đây, chúng ta có thể thấy rằng có sáu người dùng được xác định trên hệ thống, tất cả đều chỉ có thể đăng nhập cục bộ. Năm trong số các tài khoản được định cấu hình để sử dụng xác thực mật khẩu. Tài khoản

SELECT user,host,plugin FROM mysql.user

0 được định cấu hình để sử dụng xác thực ổ cắm Unix

Chúng tôi có thể tìm thêm thông tin về thuộc tính người dùng bằng cách sử dụng lệnh

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

1. Mặc dù tên của nó, nó hiển thị tất cả các thuộc tính hiện tại của tài khoản người dùng, không nhất thiết là những thuộc tính đã được sử dụng trong quá trình tạo tài khoản ban đầu

Lệnh

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

1 lấy tên tài khoản làm đối số

''@'<host>'

0

Thông thường, tốt nhất là kết thúc lệnh bằng dấu kết thúc câu lệnh

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

3 thay vì dấu hai chấm thông thường (

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

4) để bạn có thể xem kết quả rõ ràng hơn một chút

Để hiển thị các thuộc tính cho tài khoản

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

5, bạn sẽ nhập

''@'<host>'

1

''@'<host>'

2

Làm thế nào để bạn thay đổi người dùng MySQL hiện tại?

Bạn có thể thay đổi người dùng hiện có trong MySQL bằng lệnh

CREATE USER '<user>'@'<host>';

5. Điều này có thể được sử dụng để thay đổi hầu hết các thuộc tính liên quan đến người dùng của một tài khoản, ngoại trừ các đặc quyền của tài khoản, được kiểm soát bởi các lệnh

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

7 và

+------------------+-----------+-----------------------+

user | host | plugin |

+------------------+-----------+-----------------------+

mary | localhost | auth_socket |

mysql.infoschema | localhost | caching_sha2_password |

mysql.session | localhost | caching_sha2_password |

mysql.sys | localhost | caching_sha2_password |

root | localhost | caching_sha2_password |

useradmin | localhost | caching_sha2_password |

+------------------+-----------+-----------------------+

6 rows in set (0.00 sec)

8

Cú pháp cơ bản cho

CREATE USER '<user>'@'<host>';

5 trông như thế này

''@'<host>'

3

Làm cách nào để bạn thay đổi mật khẩu cho người dùng MySQL?

Đối với hầu hết mọi người, cách sử dụng phổ biến nhất của

CREATE USER '<user>'@'<host>';

5 là sửa đổi mật khẩu

Ví dụ: bạn có thể sửa đổi mật khẩu cho

''@'<host>'

01 bằng cách nhập

''@'<host>'

4

Nếu bạn muốn đặt mật khẩu tạm thời cho người dùng mà họ sẽ phải thay thế ngay lập tức, bạn có thể đặt và hết hạn mật khẩu cùng một lúc

''@'<host>'

5

Bạn luôn có thể thay đổi mật khẩu của chính mình, ngay cả khi không có đặc quyền

CREATE USER '<user>'@'<host>';

4. Cách dễ nhất là sử dụng hàm

''@'<host>'

03 để tự động điền tên người dùng của bạn

''@'<host>'

6

Làm cách nào để bạn thay đổi plugin xác thực cho người dùng MySQL?

Bạn cũng có thể thay đổi cơ chế hoặc plugin được sử dụng để xác thực tài khoản

Trong một ví dụ trước đó, chúng tôi đã định cấu hình một tài khoản có tên

SELECT user,host,plugin FROM mysql.user

0 để sử dụng xác thực ổ cắm Unix. Nếu sau này chúng ta muốn thay đổi tài khoản đó để sử dụng xác thực mật khẩu thông thường, chúng ta có thể sử dụng lại lệnh

CREATE USER '<user>'@'<host>';

5

Đầu tiên, xác định plugin xác thực mặc định cho máy chủ của bạn. Nếu đó là phương thức xác thực dựa trên mật khẩu, tốt nhất bạn nên sử dụng lại lựa chọn mặc định

''@'<host>'

7

Trong trường hợp này, plugin xác thực mặc định là

''@'<host>'

06, vì vậy chúng tôi sẽ sử dụng plugin đó khi chuyển sang xác thực bằng mật khẩu

Bây giờ, thay đổi

SELECT user,host,plugin FROM mysql.user

0 để sử dụng plugin

''@'<host>'

06 với mật khẩu mới

''@'<host>'

8

Người dùng

SELECT user,host,plugin FROM mysql.user

0 sẽ không thể đăng nhập bằng xác thực ổ cắm Unix nữa, nhưng họ có thể đăng nhập bằng mật khẩu được cung cấp

Làm thế nào để bạn đăng nhập vào MySQL?

Chúng ta đã thảo luận về cách tạo và sửa đổi tài khoản người dùng MySQL, bao gồm cả xác thực. Tuy nhiên, chúng tôi chưa nói về cách đăng nhập thực sự bằng các phương thức xác thực này

Máy khách

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

0 là một máy khách dòng lệnh mạnh mẽ có thể được sử dụng để kết nối với cơ sở dữ liệu cục bộ và từ xa. Chúng tôi sẽ sử dụng nó để nói về cách xác thực bằng các phương pháp chúng tôi đã định cấu hình ở trên

Làm cách nào để bạn đăng nhập vào cơ sở dữ liệu cục bộ bằng mật khẩu?

Để đăng nhập vào cơ sở dữ liệu MySQL được lưu trữ cục bộ bằng tài khoản người dùng có mật khẩu, cú pháp cơ bản sẽ như sau

''@'<host>'

9

Vì vậy, nếu người dùng

''@'<host>'

01 muốn đăng nhập vào MySQL và kết nối với cơ sở dữ liệu

''@'<host>'

12 từ máy tính nơi hệ thống được lưu trữ, họ có thể nhập

'<user>'@'%'

0

Ứng dụng khách

CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';

0 sẽ nhắc nhập mật khẩu cho

''@'<host>'

01. Nếu bạn cung cấp thông tin đăng nhập chính xác, bạn sẽ được kết nối với cơ sở dữ liệu

''@'<host>'

12

Chỉ định cơ sở dữ liệu trên dòng lệnh là tùy chọn. Nếu không có chỉ định nào, bạn sẽ kết nối với máy chủ nhưng không kết nối với cơ sở dữ liệu cụ thể

Làm cách nào để bạn đăng nhập vào cơ sở dữ liệu cục bộ bằng xác thực ổ cắm Unix?

Để đăng nhập vào máy chủ MySQL cục bộ bằng cách sử dụng xác thực ổ cắm Unix, bạn cần phải đăng nhập vào hệ điều hành của mình với tên tài khoản phù hợp. Vì vậy, nếu chúng tôi muốn xác thực với

SELECT user,host,plugin FROM mysql.user

0 bằng cách sử dụng xác thực ổ cắm Unix, trước tiên chúng tôi phải đăng nhập vào máy tính của mình bằng tên người dùng có tên là

mysql

9

Khi bạn đang sử dụng đúng tài khoản hệ điều hành, bạn có thể kết nối trực tiếp với cơ sở dữ liệu cục bộ bằng cách thực thi ứng dụng khách, không có tùy chọn nào

mysql

Như trước đây, bạn có thể tùy chọn thêm tên cơ sở dữ liệu để kết nối với cơ sở dữ liệu cụ thể mà bạn muốn

Làm cách nào để bạn đăng nhập vào cơ sở dữ liệu từ xa bằng mật khẩu?

Nếu máy chủ MySQL của bạn không chạy trên máy chủ cục bộ, bạn sẽ phải chỉ định máy chủ mà máy khách sẽ cố gắng kết nối tới. Bạn có thể làm điều đó bằng cách thêm tùy chọn

''@'<host>'

18

Hầu hết thời gian, bạn sẽ xác thực bằng mật khẩu cho các máy chủ MySQL từ xa, vì vậy lệnh sẽ giống như thế này

'<user>'@'%'

2

Vì vậy,

''@'<host>'

19 có thể kết nối với máy chủ MySQL nằm trên

''@'<host>'

20 bằng cách nhập

'<user>'@'%'

3

Làm thế nào để bạn xóa người dùng MySQL?

Giữ tài khoản người dùng không còn phục vụ mục đích là một rủi ro bảo mật. Bạn có thể xóa tài khoản dễ dàng bằng lệnh

CREATE USER '<user>'@'<host>';

6

Cú pháp cơ bản trông như thế này

'<user>'@'%'

4

Vì vậy, để xóa người dùng

SELECT user,host,plugin FROM mysql.user

0, bạn sẽ gõ

'<user>'@'%'

5

Nếu bạn cố xóa một người dùng không tồn tại, bạn sẽ gặp lỗi

'<user>'@'%'

6

Để tránh điều này, bạn có thể thêm mệnh đề

''@'<host>'

23 trước tên tài khoản. Nếu người dùng tồn tại, nó sẽ bị xóa. Nếu không, chỉ có một cảnh báo sẽ được đưa ra

'<user>'@'%'

7

Phần kết luận

Cấu hình xác thực và quản lý tài khoản người dùng của MySQL rất linh hoạt. Học cách tạo, sửa đổi và lấy thông tin về người dùng trong MySQL sẽ giúp bạn quản trị hệ thống cơ sở dữ liệu của mình hiệu quả hơn

Các phương pháp hay nhất về bảo mật quy định rằng bạn nên tạo tài khoản cho từng trường hợp sử dụng duy nhất, chỉ cung cấp mức truy cập cần thiết để thực hiện phạm vi của chúng. Tạo và xác thực tài khoản là giai đoạn đầu tiên của quy trình này. Trong một hướng dẫn khác, chúng ta sẽ nói về việc cấp và thu hồi các đặc quyền để hoàn thành phần khác của chiến lược đó

Câu hỏi thường gặp

Làm cách nào để bạn thay đổi mật khẩu người dùng trong MySQL?

Cách phổ biến nhất để thay đổi mật khẩu của người dùng là sử dụng

CREATE USER '<user>'@'<host>';

5. Ví dụ: bạn có thể sửa đổi mật khẩu cho

''@'<host>'

01 bằng cách sử dụng

''@'<host>'

4

Bạn cũng có thể đặt mật khẩu tạm thời bằng cách sử dụng

''@'<host>'

5

Làm cách nào để sửa lỗi truy cập người dùng root trong MySQL?

Có một số lý do tiềm ẩn khiến bạn có thể gặp lỗi khi cố gắng đăng nhập với tư cách người dùng root vào cơ sở dữ liệu MySQL. MySQL giải quyết các kiểm tra khắc phục sự cố mà bạn có thể thực hiện trong tài liệu của họ

Một số trường hợp phổ biến bao gồm cần đặt lại mật khẩu người dùng root hoặc chỉnh sửa tệp cấu hình

Làm thế nào để bạn loại bỏ người dùng trong MySQL?

Bạn có thể loại bỏ người dùng trong MySQL bằng cách sử dụng lệnh

CREATE USER '<user>'@'<host>';

6. Cú pháp cơ bản trông như thế này

'<user>'@'%'

4

Để tránh cố gắng xóa người dùng không tồn tại, bạn có thể thêm mệnh đề

''@'<host>'

23 trước tên tài khoản

Làm thế nào để bạn hiển thị tất cả người dùng trong MySQL?

Để liệt kê tất cả người dùng trong phiên bản MySQL, bạn có thể sử dụng câu lệnh

CREATE USER '<user>'@'<host>';

9 trên cơ sở dữ liệu

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';

4. Cú pháp sẽ như sau khi cũng bao gồm cả

''@'<host>'

30 và

''@'<host>'

31

Người dùng @% có nghĩa là gì trong MySQL?

'%' nghĩa là bạn có thể đăng nhập vào cơ sở dữ liệu từ bất kỳ máy chủ nào được kết nối với cơ sở dữ liệu đó . Bạn cũng xác định máy chủ cục bộ của mình là máy chủ lưu trữ nếu bạn muốn truy cập cơ sở dữ liệu từ máy chủ cục bộ. để thay đổi mật khẩu của bạn. ĐẶT MẬT KHẨU CHO 'tôi'@'%' = MẬT KHẨU('letmein');

Xác thực trong MySQL là gì?

Xác thực và ủy quyền là những cân nhắc cần thiết để quản lý và bảo mật máy chủ MySQL của bạn. Xác thực (đôi khi được viết tắt là "authn") đề cập đến lớp chính sách và cơ chế xác minh rằng máy khách được phép kết nối với tư cách là một người dùng nhất định .

Làm cách nào để đăng nhập MySQL bằng tên người dùng và mật khẩu?

Thay thế [tên người dùng] bằng tên người dùng để cài đặt MySQL của bạn. 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

Xác thực mặc định trong MySQL là gì?

Trong MySQL 8. 0, caching_sha2_password là plugin xác thực mặc định thay vì mysql_native_password, là plugin mặc định trong MySQL 5. 7. Plugin caching_sha2_password phía máy chủ được tích hợp vào máy chủ và nó không cần phải tải một cách rõ ràng.