Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Quản lý người dùng MySQL

MySQL là một trong những trình quản lý cơ sở dữ liệu phổ biến nhất trên thế giới. Nó chứa nhiều tính năng làm cho nó đáng tin cậy, hiệu quả và mạnh mẽ. Độ tin cậy tối đa của nó đạt được nếu nó được sử dụng đúng cách. Tạo người dùng có quyền hạn chế trên cơ sở dữ liệu là một trong những cách dễ nhất và đáng tin cậy để tăng cường bảo mật MySQL.

MySQL tạo người dùng

Khi cài đặt MySQL, người dùng gốc (quản trị viên MySQL) là người dùng đầu tiên được tạo. Người dùng root được phép làm bất cứ điều gì và mọi thứ trên cơ sở dữ liệu MySQL. Người khác có thể truy cập cơ sở dữ liệu của bạn bằng tài khoản này rất thuận tiện.

Người dùng độc hại có thể cố gắng đăng nhập với tư cách người dùng gốc để lấy cắp thông tin được lưu trữ trên máy chủ hoặc phá hủy dịch vụ cùng với dữ liệu. Do đó, người quản trị hệ thống phải tạo người dùng với các quyền cụ thể trên cơ sở dữ liệu. Điều này đảm bảo rằng nếu tính bảo mật của người dùng đó bị xâm phạm thì tác động là tối thiểu hoặc có thể kiểm soát được.

MySQL Create User statement cho phép bạn tạo một tài khoản người dùng mới trong máy chủ cơ sở dữ liệu. Nó cung cấp các thuộc tính xác thực, giới hạn tài nguyên, vai trò và quản lý mật khẩu cho các tài khoản mới. Tuyên bố cũng cho phép chúng tôi kiểm soát các tài khoản cần được khóa hoặc mở khóa.

Để Tạo Người dùng, bắt buộc phải có đặc quyền chung (là người dùng gốc) câu lệnh “CREATE USER” hoặc đặc quyền CHÈN cho lược đồ hệ thống MySQL. Lỗi sẽ xuất hiện nếu bạn cố gắng tạo người dùng đã tồn tại nhưng nếu bạn sử dụng mệnh đề “NẾU KHÔNG TỒN TẠI”, câu lệnh sẽ đưa ra cảnh báo cho từng người dùng được đặt tên đã tồn tại thay vì thông báo lỗi.

Để tạo người dùng không phải root và cấp cho họ các đặc quyền cụ thể để truy cập và sửa đổi cơ sở dữ liệu, chúng tôi sử dụng cú pháp sau:

CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';

Tên_tài_khoản có hai phần; tên người dùng và tên máy chủ, được phân tách bằng ký hiệu @. Tên người dùng là tên của người dùng, trong khi tên máy chủ là tên của máy chủ lưu trữ mà từ đó người dùng có thể kết nối với máy chủ cơ sở dữ liệu.

username@hostname

Tên máy chủ là tùy chọn. Nếu tên máy chủ không được cung cấp, người dùng có thể kết nối từ bất kỳ máy chủ lưu trữ nào trên máy chủ. Tên tài khoản người dùng không có tên máy chủ có thể được viết dưới dạng tên người dùng @%

CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';

Lưu ý rằng câu lệnh tạo người dùng tạo một người dùng mới có đầy đủ quyền truy cập. để cấp đặc quyền cho người dùng, hãy sử dụng câu lệnh GRANT

Sử dụng các bước sau để tạo người dùng mới trong cơ sở dữ liệu MySQL:

1. Bằng cách sử dụng công cụ máy khách MySQL, hãy mở máy chủ MySQL

2. Nhập mật khẩu, sau đó nhấn Enter.

3. Tạo người dùng mới bằng lệnh sau

create user 'foss'@'localhost' identified by 'foss12345'; 

4. Sử dụng lệnh sau để hiển thị người dùng trong máy chủ MySQL

select user from mysql.user;

Từ kết quả được hiển thị, người dùng ‘hóa thạch’ đã được tạo thành công.

5. Bây giờ sử dụng mệnh đề IF NOT EXISTS với câu lệnh CREATE USER bằng cách chạy lệnh sau:

Cấp đặc quyền cho Người dùng mới MySQL

Một số đặc quyền phổ biến nhất do máy chủ MySQL cung cấp cho người dùng mới bao gồm;

1. TẤT CẢ CÁC QUYỀN RIÊNG TƯ: cho phép tất cả các đặc quyền đối với tài khoản người dùng mới

2. TẠO: cho phép tài khoản người dùng tạo cơ sở dữ liệu và bảng

3. DROP: cho phép tài khoản người dùng thả cơ sở dữ liệu và bảng

4. XÓA: cho phép tài khoản người dùng xóa các hàng khỏi một bảng cụ thể

5. CHÈN: cho phép tài khoản người dùng chèn các hàng vào một bảng cụ thể

6. CHỌN: cho phép tài khoản người dùng đọc cơ sở dữ liệu

7. CẬP NHẬT: cho phép tài khoản người dùng cập nhật các hàng trong bảng

Thực thi lệnh sau để cấp tất cả các đặc quyền cho người dùng

GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';

Thực thi lệnh sau để cấp các đặc quyền cụ thể cho người dùng mới được tạo,

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';

Để xóa tất cả các đặc quyền được gán cho người dùng, hãy thực hiện lệnh bên dưới.

FLUSH PRIVILEGES;

Để xem các đặc quyền hiện có được gán cho người dùng, hãy thực hiện lệnh sau.

SHOW GRANTS FOR 'foss'@'localhost';

MySQL Drop User

Câu lệnh MySQL Drop User cho phép bạn xóa một hoặc nhiều tài khoản người dùng và các đặc quyền của họ khỏi máy chủ cơ sở dữ liệu. Nếu tài khoản người dùng không tồn tại trong máy chủ cơ sở dữ liệu, nó sẽ trả về lỗi.

Để sử dụng câu lệnh Drop User, bạn cần có đặc quyền chung hoặc đặc quyền DELETE cho lược đồ hệ thống MySQL.

Cú pháp để xóa toàn bộ tài khoản người dùng khỏi máy chủ cơ sở dữ liệu như sau:

DROP USER 'foss'@'localhost';

Lưu ý: Tên tài khoản trong ví dụ trên được xác định là tên người dùng @ tên máy chủ. Tên người dùng là tên của tài khoản bạn muốn xóa khỏi máy chủ cơ sở dữ liệu và tên máy chủ là tên máy chủ của tài khoản người dùng. ví dụ:‘Foss @ localhost’. hóa thạch là tên người dùng, trong khi localhost là tên máy chủ.

Sau đây là các bước cần thực hiện khi xóa người dùng hiện có khỏi cơ sở dữ liệu máy chủ MySQL;

1. Bằng cách sử dụng công cụ máy khách MySQL, hãy mở máy chủ MySQL

2. Nhập mật khẩu tài khoản, sau đó nhấn Enter

3. Để xóa tài khoản người dùng, hãy thực hiện lệnh sau

DROP USER 'fosslinux'@'localhost';

4. Thực hiện lệnh sau để hiển thị người dùng

select user from mysql.user;

Bạn sẽ nhận được một đầu ra mà tên người dùng Folinux sẽ không hiện diện, như được hiển thị bên dưới:

5. Người dùng Drop cũng có thể được sử dụng để xóa nhiều tài khoản người dùng cùng một lúc. Để làm điều đó, bạn phân tách tên_tài khoản bằng dấu phẩy.

Lưu ý: Vì chúng tôi đã loại bỏ người dùng, chúng tôi sẽ tạo hai người dùng bằng cách sử dụng khái niệm người dùng tạo (Folllinuxtuts và Folllinux @%). Sau đó, chúng ta sẽ chạy lệnh ở bước 4 để hiển thị những người dùng hiện có như hình dưới đây:

Bây giờ thả hai người dùng đồng thời bằng cách sử dụng lệnh dưới đây:Thực hiện lệnh sau để thả cả hai người dùng:

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;

Lưu ý rằng câu lệnh DROP không thể tự động đóng bất kỳ phiên người dùng đang mở nào. Khi câu lệnh DROP được thực thi trong khi phiên tài khoản người dùng đang hoạt động, lệnh sẽ không ảnh hưởng đến nó cho đến khi phiên của nó bị đóng. Tài khoản người dùng chỉ bị loại bỏ khi phiên đóng cửa và lần thử tiếp theo của người dùng sẽ không thể đăng nhập lại.

MySQL hiển thị người dùng / danh sách tất cả người dùng

Để quản lý cơ sở dữ liệu trong MySQL, bạn cần xem danh sách tất cả tài khoản của người dùng trong cơ sở dữ liệu. Mọi người cho rằng có một lệnh SHOW USERS tương tự như SHOW DATABASE hoặc SHOW TABLES để hiển thị danh sách tất cả người dùng có sẵn trong máy chủ cơ sở dữ liệu. Rất tiếc, máy chủ MySQL không có lệnh SHOW USERS để hiển thị danh sách tất cả người dùng trong máy chủ MySQL. Vì vậy, thay vào đó, chúng tôi sử dụng truy vấn sau để xem danh sách tất cả người dùng trong máy chủ cơ sở dữ liệu:

Select user from mysql.user;

Sau khi thực hiện lệnh, bạn sẽ nhận được dữ liệu người dùng từ bảng người dùng của máy chủ cơ sở dữ liệu MySQL.

Lưu ý: Trong ví dụ này, chúng ta sẽ sử dụng cơ sở dữ liệu MySQL. Chọn cơ sở dữ liệu bằng cách chạy lệnh dưới đây, sau đó sử dụng câu lệnh select from để kiểm tra những người dùng hiện có như thể hiện trong hình ảnh bên dưới:

use mysql;
SELECT user FROM user;

Nếu bạn muốn xem thêm thông tin trên bảng người dùng, hãy thực hiện lệnh sau:

Người dùng
DESC user;

Lệnh sẽ đưa ra kết quả sau liệt kê tất cả các cột có sẵn của cơ sở dữ liệu mysql.user:

Để nhận thông tin đã chọn như tên máy chủ, trạng thái hết hạn mật khẩu và khóa tài khoản, hãy thực hiện truy vấn sau:

 SELECT user, host, account_locked, password_expired FROM user;

Kết quả sau sẽ xuất hiện sau khi thực hiện thành công truy vấn:

Hiển thị người dùng hiện tại

Bạn có thể lấy thông tin của người dùng hiện tại bằng cách sử dụng hàm user () hoặc current_user () như hình dưới đây:

Select user(); 

HOẶC

Select current_user();

Kết quả sau sẽ xuất hiện sau khi thực hiện thành công bất kỳ lệnh nào ở trên.

Hiển thị người dùng hiện đã đăng nhập

Bạn có thể thấy người dùng hiện đang đăng nhập vào máy chủ cơ sở dữ liệu bằng cách sử dụng lệnh sau trong máy chủ MySQL:

SELECT user, host, db, command FROM information_schema.processlist;

Các lệnh trên xuất ra một màn hình tương tự như được hiển thị bên dưới:

Cách thay đổi mật khẩu người dùng MySQL

Bản ghi người dùng MySQL chứa thông tin đăng nhập, đặc quyền tài khoản và thông tin máy chủ cho tài khoản MySQL để truy cập và quản lý cơ sở dữ liệu. Thông tin đăng nhập bao gồm tên người dùng và mật khẩu. Do đó, có thể cần phải thay đổi mật khẩu người dùng trong cơ sở dữ liệu MySQL.

Để thay đổi bất kỳ mật khẩu tài khoản người dùng nào, hãy nhớ ghi nhớ những thông tin sau:

  • Chi tiết về tài khoản người dùng sẽ được thay đổi
  • Ứng dụng được sử dụng bởi tài khoản người dùng có mật khẩu sẽ được thay đổi. Nếu mật khẩu tài khoản người dùng đã được đặt lại mà không thay đổi chuỗi kết nối ứng dụng, thì ứng dụng đó không thể kết nối với máy chủ cơ sở dữ liệu.

MySQL cho phép bạn thay đổi mật khẩu tài khoản người dùng theo ba cách khác nhau:

  1. CẬP NHẬT tuyên bố
  2. Câu lệnh ĐẶT MẬT KHẨU
  3. Tuyên bố ALTER USER

Thay đổi mật khẩu tài khoản người dùng bằng câu lệnh UPDATE

Sau khi thực hiện câu lệnh UPDATE, chúng tôi sử dụng câu lệnh FLUSH PRIVILEGE để tải lại các đặc quyền từ bảng cấp của cơ sở dữ liệu MySQL.
Giả sử bạn muốn thay đổi mật khẩu cho tài khoản người dùng kết nối từ localhost với mật khẩu Foss12345, thực hiện lệnh sau:

USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss'; 
FLUSH PRIVILEGES;

Câu lệnh trên sẽ không hoạt động trên MySQL phiên bản 5.7.6 trở lên vì bảng người dùng MySQL chứa cột chuỗi xác thực chỉ lưu trữ mật khẩu. Các phiên bản cao hơn có cột chuỗi xác thực trong câu lệnh CẬP NHẬT như được hiển thị trong câu lệnh sau:

USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';

FLUSH PRIVILEGES;

Lưu ý: Phương pháp này chỉ hoạt động với các phiên bản MySQL cũ hơn. Do đó, nếu bạn có phiên bản MySQL mới hơn hoặc mới nhất, hãy chuyển sang các phương pháp khác.

Thay đổi mật khẩu tài khoản người dùng bằng câu lệnh SET PASSWORD

Nếu muốn đổi mật khẩu tài khoản khác, bạn cần có đặc quyền CẬP NHẬT. Câu lệnh sử dụng tài khoản người dùng ở định dạng sau:username @ localhost

Tải lại các đặc quyền từ bảng rant của cơ sở dữ liệu MySQL bằng FLUSH PRIVILEGES không cần phải được sử dụng. Để thay đổi mật khẩu của tài khoản người dùng (hóa thạch) bằng cách sử dụng câu lệnh ĐẶT MẬT KHẨU, hãy sử dụng câu lệnh sau:

SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');

Nếu bạn đang sử dụng MySQL phiên bản 5.7.6 trở lên, câu lệnh trên không được dùng nữa và sẽ không hoạt động trong các bản phát hành trong tương lai. Thay vào đó, hãy sử dụng câu lệnh sau;

SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';

Thay đổi mật khẩu tài khoản người dùng bằng câu lệnh ALTER USER

MySQL sử dụng câu lệnh ALTER USER với mệnh đề IDENTIFIED BY. Để làm điều đó, bạn sử dụng cú pháp sau:

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';

Bạn có thể cần đặt lại mật khẩu tài khoản gốc MySQL. Để thực hiện việc này, bạn có thể buộc dừng rồi khởi động lại máy chủ cơ sở dữ liệu MySQL mà không cần sử dụng xác thực bảng cấp.

Kết luận

Bài viết này đã trình bày toàn diện tất cả các khía cạnh liên quan đến quản lý người dùng MySQL. Chúng tôi tin rằng nó đủ chi tiết để cung cấp cho bạn các giải pháp cho các vấn đề của bạn. Nếu bạn gặp lỗi hoặc khó khăn khi hiển thị người dùng sử dụng MySQL, vui lòng liên hệ qua phần nhận xét để được trợ giúp. Cảm ơn vì đã đọc.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ so sánh ngày và tháng với trường ngày trong mysql

  2. Hàm không xác định mysql_connect ()

  3. Cách lấy số ngày trong tháng trong MySQL

  4. Cách tạo tập lệnh từ sơ đồ trong MySQL Workbench

  5. Khi nào tôi nên sử dụng MySQLi thay vì MySQL?