Giới thiệu
Quản lý người dùng là trách nhiệm quan trọng nhất của bất kỳ ai muốn quản lý hệ thống cơ sở dữ liệu MySQL. Tạo, thay đổi và xóa tài khoản người dùng để đại diện tốt nhất cho người dùng và dịch vụ trong môi trường của bạn giúp tạo cơ sở 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 tra và trách nhiệm giải trình đối với các sửa đổi.
Trong hướng dẫn này, chúng ta sẽ nói về cách quản lý tài khoản người dùng trong MySQL. Đầu tiên, chúng ta sẽ thảo luận về người dùng hợp lệ trong MySQL là gì và hướng dẫn 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 xác thực cho từng người dùng và cách hệ thống chọn một 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 thảo luận về việc thực hiện các thay đổi đối với người dùng hiện tại, 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 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 tôi 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
:tạo tài khoản người dùng mới -
ALTER USER
:thực hiện các thay đổi đối với tài khoản người dùng hiện có -
DROP USER
:xóa tài khoản người dùng hiện có
Đặ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 CREATE USER
đặc quyền. CREATE USER
đặc quyền 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 SELECT
đặc quyền trên mysql
cơ sở dữ liệu để xem thông tin về người dùng hiện tại.
Theo thứ tự ưu tiên, bạn nên đăng nhập bằng:
- Một tài khoản giới hạn có
CREATE USER
đặc quyền vàSELECT
đặc quyền trênmysql
cơ sở dữ liệu -
root
hoặc người dùng quản trị có đầy đủ đặc quyền trong MySQL
Hiểu cách MySQL định nghĩa 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ẽ hữu ích nếu bạn dành một chút thời gian để làm quen với nhiều thứ mà MySQL sử dụng để tạo và giới thiệu người dùng. Bạn cũng cần phải làm quen với thuật toán xác thực của MySQL để hiểu nó sẽ sử dụng tài khoản người dùng nào để xác thự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ại (@):
- Tên người dùng
- Máy chủ lưu trữ mà người dùng đang kết nối
Nói chung, tài khoản người dùng trên hệ thống sẽ giống như sau:
'<user>'@'<host>'
Các dấu ngoặc kép có thể được sử dụng, như trên, để bao 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. Chúng đôi khi cần thiết nếu một trong hai thành phần chứa các ký tự có thể bị hiểu sai. Nói chung, thêm chúng luôn là một ý kiến hay.
Vì vậy, thay vì chỉ có một tài khoản có tên là 'john'
, 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ư 'john'@'localhost'
. Điều này có nghĩa là có thể có nhiều 'john'
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 ý nghĩa 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 không có giá trị người dùng bằng cách sử dụng một chuỗi trống:
''@'<host>'
Ví dụ:bạn có thể tạo người dùng là ''@'localhost'
. Người dùng này sẽ khớp với bất kỳ tên người dùng kết nối từ máy tính cục bộ.
Tương tự như vậy, bạn có thể có một tài khoản người dùng phù hợp với bất kỳ máy chủ lưu trữ 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, như thế này:
'<user>'@'%'
Ví dụ:nếu bạn tạo 'john'@'%'
, tài khoản đó sẽ khớp với 'john'
người dùng kết nối từ bất kỳ máy chủ.
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 lớp phổ biến các vấn đề xác thực xuất phát từ các giả định hợp lý nhưng không chính xác. Điều này đã được thảo luận chuyên sâu trong phần giới thiệu của chúng tôi về xác thực và ủy quyền trong bài viết MySQL.
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 user
bảng của mysql
nội bộ của nó cơ sở dữ liệu để 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ố gắng 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 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ộ mysql.user
bảng vào bộ nhớ. Nó cũng thực hiện đ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 nhập từ mức ưu tiên cao nhất đến mức thấp nhất.
MySQL sử dụng Host
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ị chữ được sắp xếp ở trên cùng là mức độ ưu tiên cao nhất và những giá trị sử dụng ký tự đại diện, như %
, được sắp xếp ở dưới cùng. Các mục nhập cuối cùng là những mục chỉ chứa %
không có ký tự nào khác, theo sau là các mục nhập có máy chủ hoàn toàn trống.
Người dùng User
cột đượ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 Host
giá trị. Một lần nữa, các kết quả phù hợp chính xác hơn được ưu tiên. Kể từ khi User
cột không thể sử dụng ký tự đại diện, tất cả các mục nhập đều có giá trị ngang nhau ngoại trừ những mục có User
trống giá trị. Chúng được sắp xếp ở dưới cùng. Nếu bất kỳ mục nhập nào có User
trống giá trị đượ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 một yêu cầu kết nối được thực hiện, MySQL sẽ đi qua bảng được sắp xếp của nó trong bộ nhớ từ trên xuống dưới. Nó sử dụng đầu tiên mục nhập mà nó tìm thấy để xác thực người dùng, bất kể có các mục nhập khác cũng khớp hay không. Nếu máy khách không xác thực được bằng phương pháp được xác định bởi mục nhập đó, kết nối sẽ không thành công và không có mục nhập 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?
Do thuật toán xác thực của MySQL, các vấn đề 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ó người dùng hoặc thành phần máy chủ. Điều này là do cách mà MySQL quyết định bản ghi nào sẽ sử dụng để xác thực bạn có thể không trực quan và đáng ngạc nhiên.
Ví dụ:nếu người dùng xác thực với MySQL với phần người dùng là một 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 luật, người dùng ẩn danh hầu như không có quyền lực và có thể thực hiện rất ít sau khi được kết nối. Thậm chí có thể vô tình xác thực với tư cách là một người dùng ẩn danh khi cố gắng xác thực bằng một tài khoản người dùng khác.
Thách thức với việc sử dụng ký tự đại diện máy chủ đối với 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ủ có thể dễ dàng che dấ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à 'emily'@'%'
, bạn có thể mong đợi có thể xác thực với 'emily'
từ bất kỳ máy chủ lưu trữ nào. Tuy nhiên, nếu bạn có tài khoản người dùng với người dùng trống nhưng giá trị máy chủ lưu trữ khớp với máy chủ lưu trữ 'emily'
đang kết nối từ, MySQL sẽ xác thực bằng tài khoản đó thay thế (dẫn đến đăng nhập người dùng ẩn danh như được mô tả ở trên).
Vì vậy, làm ví dụ, MySQL sẽ sắp xếp các tài khoản sau theo thứ tự sau:
Ưu tiên | Tài khoản MySQL | Nhận xét |
---|---|---|
1 | 'emily'@'localhost' và 'emily'@'example.com' | Những thứ này có mức độ ưu tiên ngang nhau, điều này không sao cả vì chỉ một trong số chúng có thể khớp với một kết nối. |
2 | ''@'localhost' và ''@'example.com' | Hai mục này lại có cùng mức độ ưu tiên. Vì họ không có thành phần người dùng, nhưng họ có có thành phần máy chủ theo nghĩa đen, chúng được đặt ở cuối các mục nhập có giá trị máy chủ chính xác. |
3 | 'emily'@'%.example.com' | Mục nhập này có ký tự đại diện trong thành phần máy chủ, vì vậy, nó được ưu tiên thấp hơn so với các mục nhập có giá trị máy chủ chính xác. |
4 | ''@'%.example.com' | Mụ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 | 'emily'@'%' | Mụ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 | ''@'%' | Mụ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ủ lưu trữ nào với tư cách là người dùng ẩn danh. Nó có mức độ ưu tiên cực kỳ thấp vì nó phù hợp với bất kỳ kết nối nào. |
6 | 'emily'@'' | Mụ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 máy chủ ký tự đại diện. |
8 | ''@'' | Đâ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ủ lưu trữ vì vậy nó được đặt ở cuối trong quá trình phân loại máy chủ. Vì nó cũng chứa một người dùng trống, 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 nhập không có người dùng, các kết nối được xác thực với mục nhập này sẽ được đăng nhập với tư cách người dùng ẩn danh. |
Bạn tạo người dùng bằng cách nào?
Bây giờ bạn đã cảm nhận được 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ác đặc quyền được mô tả trong điều kiện tiên quyết.
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 CREATE USER
và sau đó chỉ định người dùng và máy chủ cho tài khoản mới:
CREATE USER '<user>'@'<host>';
Thao tác 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ủ của nó khi tạo.
Làm cách nào để bạn tạo người dùng có 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ể thực hiện việc này bằng cách thêm IDENTIFIED BY
tùy chọn mệnh đề vào CREATE USER
tuyên bố:
CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';
Thao tác này sẽ tạo tài khoản người dùng mới, giống 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 để tạo người dùng với xác thực Unix socket?
Mặc dù xác thực bằng mật khẩu là phương pháp xác thực phổ biến nhất đối với hầu hết người dùng, nhưng nó không phải là lựa 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ể cấu hình cho các 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 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 như Linux hoặc Unix để một tài khoản trên hệ điều hành được cấp quyền truy cập vào cùng một 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ó một mary
người dùng trên hệ điều hành, họ sẽ có thể đăng nhập vào 'mary'@'localhost'
tài khoản 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 điều này ngay bây giờ.
Xác thực socket yêu cầu auth_socket
plugin, 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 mary
tài khoản 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 cách sử dụng người dùng này.
Để tạo người dùng có xác thực socket, chúng ta cần sử dụng IDENTIFIED WITH
mệnh đề (khác với IDENTIFIED BY
mệnh đề đượ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 'mary'@'localhost'
Người dùng MySQL từ mary
người dùng trên hệ điều hành của bạn. Khi đăng nhập bằng mary
, 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ẽ tự động đăng nhập thông qua xác thực ổ cắm Unix mà bạn đã định cấu hình.
Làm cách nào để hiển thị những người dùng hiện tại?
Tiếp theo, hãy xem cách tìm thông tin về những người dùng hiện có.
Để hiển thị tất cả người dùng MySQL hiện có, bao gồm thành phần máy chủ và người dùng của họ, cũng như plugin xác thực mà họ hiện đang sử dụng, bạn có thể SELECT
các trường đó từ mysql.user
cơ sở dữ liệu:
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 tài khoản được định cấu hình để sử dụng xác thực mật khẩu. 'mary'@'localhost'
tài khoản đượ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 SHOW CREATE USER
yêu cầu. Bất chấp tên gọi 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.
SHOW CREATE USER
lệnh lấy tên tài khoản làm đối số:
SHOW CREATE USER '<user>'@'<host>'\G
Tốt nhất bạn nên kết thúc lệnh bằng \G
dấu chấm dứt câu lệnh thay vì dấu hai chấm thông thường (;
) để 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 'useradmin'@'localhost'
tài khoản, bạn sẽ nhập:
SHOW CREATE USER 'useradmin'@'localhost'\G
*************************** 1. row ***************************CREATE USER for useradmin@localhost: CREATE USER 'useradmin'@'localhost' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$O Rl7lM;@Gt{roB4EWchqDdYM142Lq7pfzcCNiK4yUxnRBlrAgr0sE3' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT1 row in set (0.00 sec)
Làm cách nào để bạn thay đổi người dùng MySQL hiện có?
Bạn có thể thay đổi người dùng hiện tại trong MySQL bằng cách sử dụng ALTER USER
yêu cầu. Đ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 tài khoản, ngoại trừ các đặc quyền tài khoản, được kiểm soát bởi GRANT
và REVOKE
lệnh.
Cú pháp cơ bản cho ALTER USER
trông như thế này:
ALTER USER <user> <properties_to_change>;
Bạn làm cách nào để thay đổi mật khẩu cho người dùng MySQL?
Đối với hầu hết mọi người, việc sử dụng ALTER USER
phổ biến nhất là sửa đổi mật khẩu.
Ví dụ:bạn có thể sửa đổi mật khẩu cho 'kamal'@'localhost'
bằng cách gõ:
ALTER USER 'kamal'@'localhost' IDENTIFIED BY '<new_password>';
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:
ALTER USER 'kamal'@'localhost' IDENTIFIED BY '<new_password>' PASSWORD EXPIRE;
Bạn luôn có thể thay đổi mật khẩu của riêng mình, ngay cả khi không có CREATE USER
đặc ân. Dễ dàng nhất là sử dụng USER()
chức năng tự động điền tên người dùng của riêng bạn:
ALTER USER USER() IDENTIFIED BY '<new_password>';
Làm cách nào để 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 là 'mary'@'localhost'
để sử dụng xác thực ổ cắm Unix. Nếu sau này chúng tôi 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 tôi có thể sử dụng ALTER USER
ra lệnh lại.
Đầ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 pháp xác thực dựa trên mật khẩu, có lẽ tốt nhất bạn nên sử dụng lại lựa chọn mặc định:
SHOW VARIABLES LIKE 'default_authentication_plugin';
Trong trường hợp này, plugin xác thực mặc định là caching_sha2_password
, vì vậy chúng tôi sẽ sử dụng điều đó khi chúng tôi chuyển sang xác thực bằng mật khẩu.
Bây giờ, hãy thay đổi 'mary'@'localhost'
để sử dụng caching_sha2_password
plugin có mật khẩu mới:
ALTER USER 'mary'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '<marys_password>';
'mary'@'localhost'
người dùng 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 cách nào để bạn đăng nhập vào MySQL?
Chúng tôi đã 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 thực sự đăng nhập bằng các phương pháp xác thực này.
mysql
client là một client 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 để đă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 giống như sau:
mysql --user=<username> --password <dbname>
Vì vậy, nếu 'kamal'@'localhost'
người dùng muốn đăng nhập vào MySQL và kết nối với testing
cơ sở dữ liệu từ máy tính lưu trữ hệ thống, họ có thể nhập:
mysql --user=kamal --password testing
mysql
ứng dụng khách sẽ nhắc nhập mật khẩu cho 'kamal'@'localhost'
. Nếu bạn cung cấp thông tin xác thực chính xác, bạn sẽ được kết nối với testing
cơ sở dữ liệu.
Chỉ định cơ sở dữ liệu trên dòng lệnh là tùy chọn. Nếu không có quy định nào được chỉ định, 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 để đăng nhập vào cơ sở dữ liệu cục bộ với xác thực Unix socket?
Để đăng nhập vào máy chủ MySQL cục bộ bằng xác thực ổ cắm Unix, bạn cần đăng nhập vào hệ điều hành của mình bằng tên tài khoản khớp. Vì vậy, nếu chúng tôi muốn xác thực cho 'mary'@'localhost'
sử dụng xác thực ổ cắm Unix, trước tiên chúng ta 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à mary
.
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.
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 để đă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ộ của bạn, bạn sẽ phải chỉ định máy chủ mà máy khách nên cố gắng kết nối. Bạn có thể làm điều đó bằng cách thêm --host
tùy chọn.
Hầu hết thời gian, bạn sẽ xác thực bằng mật khẩu tới các máy chủ MySQL từ xa, vì vậy lệnh sẽ trông giống như sau:
mysql --user=<username> --password --host=<host> <dbname>
Vì vậy, 'tanya'@'<tanyas_domain>'
có thể kết nối với máy chủ MySQL trên example.com
bằng cách gõ:
mysql --user='tanya' --password --host='example.com'
Làm cách nào để xóa người dùng MySQL?
Giữ các 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 với DROP USER
lệnh.
Cú pháp cơ bản giống như sau:
DROP USER '<user>'@'<host>';
Vì vậy, để xóa 'mary'@'localhost'
người dùng, bạn sẽ nhập:
DROP USER 'mary'@'localhost';
Nếu bạn cố gắng xóa người dùng không tồn tại, bạn sẽ nhận được lỗi:
ERROR 1396 (HY000): Operation DROP USER failed for 'mary'@'localhost'
Để tránh điều này, bạn có thể thêm IF EXISTS
mệnh đề 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ỉ một cảnh báo sẽ được đưa ra:
Query OK, 0 rows affected, 1 warning (0.00 sec)
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ỉ được 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 quá 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 để thực hiện phần khác của chiến lược đó.