TẠO NGƯỜI DÙNG MySQL

Tất cả các lệnh được thực thi bên trong MySQL shell với quyền root hoặc người dùng quản trị. Các đặc quyền tối thiểu cần thiết để tạo tài khoản người dùng và xác định các đặc quyền của họ là

sudo mysql
4 và
sudo mysql
5

Để truy cập trình bao MySQL, hãy 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

Nếu bạn có MySQL phiên bản 5. 7 trở lên sử dụng plugin

sudo mysql
6 đăng nhập với quyền root bằng cách nhập

sudo mysql

Tạo một tài khoản người dùng MySQL mới

Tài khoản người dùng trong MySQL bao gồm hai phần. tên người dùng và tên máy chủ

Để tạo tài khoản người dùng MySQL mới, hãy chạy lệnh sau

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';

Thay thế

sudo mysql
7 bằng tên người dùng mới và
sudo mysql
8 bằng mật khẩu người dùng

Trong ví dụ trên, phần tên máy chủ được đặt thành

sudo mysql
9, có nghĩa là người dùng sẽ chỉ có thể kết nối với máy chủ MySQL từ máy chủ cục bộ (i. e. từ hệ thống nơi Máy chủ MySQL chạy)

Để cấp quyền truy cập từ máy chủ khác, hãy thay đổi phần tên máy chủ bằng IP máy từ xa. Ví dụ: để cấp quyền truy cập từ máy có IP

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
0, bạn sẽ chạy

CREATE USER 'newuser'@'10.8.0.5' IDENTIFIED BY 'user_password';

Để tạo người dùng có thể kết nối từ bất kỳ máy chủ nào, hãy sử dụng ký tự đại diện

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
1 làm phần máy chủ

CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';

Cấp đặc quyền cho tài khoản người dùng MySQL

Có nhiều loại đặc quyền có thể được cấp cho tài khoản người dùng. Bạn có thể tìm thấy danh sách đầy đủ các đặc quyền được hỗ trợ bởi MySQL tại đây

Các đặc quyền được sử dụng phổ biến nhất là

  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
    2 – Cấp tất cả các đặc quyền cho tài khoản người dùng
  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
    3 – Tài khoản người dùng được phép tạo cơ sở dữ liệu và bảng
  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
    4 - Tài khoản người dùng được phép xóa cơ sở dữ liệu và bảng
  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
    5 - Tài khoản người dùng được phép xóa các hàng khỏi một bảng cụ thể
  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
    6 - Tài khoản người dùng được phép chèn hàng vào một bảng cụ thể
  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
    7 – Tài khoản người dùng được phép đọc cơ sở dữ liệu
  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
    8 - Tài khoản người dùng được phép cập nhật các hàng của bảng

Để cấp các đặc quyền cụ thể cho tài khoản người dùng, hãy sử dụng cú pháp sau

GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';

Dưới đây là một số ví dụ

  • Dành tất cả các đặc quyền cho tài khoản người dùng trên một cơ sở dữ liệu cụ thể

    GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
  • Cấp tất cả các đặc quyền cho tài khoản người dùng trên tất cả các cơ sở dữ liệu

    GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
  • Dành tất cả các đặc quyền cho tài khoản người dùng trên một bảng cụ thể từ cơ sở dữ liệu

    GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
  • Cấp nhiều đặc quyền cho tài khoản người dùng trên một cơ sở dữ liệu cụ thể

    GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';

Hiển thị đặc quyền tài khoản người dùng MySQL

Để tìm (các) đặc quyền được cấp cho một tài khoản người dùng MySQL cụ thể, hãy sử dụng câu lệnh

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
9

sudo mysql
0

Đầu ra sẽ trông giống như dưới đây

sudo mysql
1

Thu hồi đặc quyền từ tài khoản người dùng MySQL

Cú pháp thu hồi một hoặc nhiều đặc quyền từ tài khoản người dùng gần giống như khi cấp đặc quyền

Bạn được nhắc nhập mật khẩu gốc MySQL của mình (lưu ý rằng mật khẩu này không giống với mật khẩu gốc của Máy chủ đám mây)

Tạo người dùng mới

Bạn có thể tạo người dùng mới và đặt mật khẩu cho người dùng cùng một lúc, như được hiển thị trong lệnh ví dụ sau, lệnh này tạo người dùng có tên người dùng test

CREATE USER 'test'@'localhost' IDENTIFIED BY 'newpassword';

Tiếp theo, bạn cần xóa các đặc quyền, thao tác này sẽ tải lại bảng

FLUSH PRIVILEGES;
Done.
Permissions - Select
0 trong MySQL. Bạn phải thực hiện bước này mỗi khi thêm hoặc chỉnh sửa người dùng

Ví dụ sau đây cho thấy lệnh mà bạn sử dụng để xóa đặc quyền

FLUSH PRIVILEGES;
Done.
Permissions - Select

Đặt quyền cho người dùng mới

Ở giai đoạn này, người dùng mới của bạn (test) chưa được đặt quyền và không thể làm bất cứ điều gì. Bạn có thể muốn bắt đầu thiết lập quyền bằng cách gán quyền (chỉ đọc)

FLUSH PRIVILEGES;
Done.
Permissions - Select
2 trên tất cả các cơ sở dữ liệu có sẵn. Bạn có thể cấp quyền chọn bằng cách chạy lệnh sau

GRANT SELECT ON * . * TO 'test'@'localhost';
Permissions - All

Tạo cơ sở dữ liệu mới và cho phép test có toàn quyền truy cập vào cơ sở dữ liệu đó để họ có thể tạo, đọc, cập nhật và xóa bản ghi, như trong ví dụ sau

CREATE DATABASE mytestdb;
Now we have the database and the user, we can assign the privileges:
GRANT ALL PRIVILEGES ON `mytestdb` . * TO 'test'@'localhost';

Ghi chú. Bạn phải bao gồm các backticks bao quanh tên cơ sở dữ liệu

Đây là loại quyền mà bạn có thể muốn sử dụng khi thiết lập người dùng và cơ sở dữ liệu cho ứng dụng web. Người dùng không cần truy cập bất kỳ cơ sở dữ liệu nào khác

Xóa các đặc quyền bằng cách chạy lệnh sau

FLUSH PRIVILEGES;

Đăng nhập với tư cách người dùng mới

Để xác minh rằng các quyền mà bạn đặt hoạt động bình thường, hãy đăng nhập vào MySQL với tư cách là người dùng mới bằng cách chạy lệnh sau

mysql -u test -p

Khi bạn được nhắc, hãy nhập mật khẩu cho người dùng test

Sau khi bạn đăng nhập với tư cách là người dùng test, hãy thử tạo cơ sở dữ liệu mới bằng cách chạy lệnh sau

CREATE DATABASE mytestdb2;

Thông báo lỗi sau hiển thị

ERROR 1044 (42000): Access denied for user 'test'@'localhost' to database 'mytestdb2'

Lỗi này xảy ra vì người dùng test chỉ có

FLUSH PRIVILEGES;
Done.
Permissions - Select
7 đối với cơ sở dữ liệu 'mytestdb' và
FLUSH PRIVILEGES;
Done.
Permissions - Select
2 đối với mọi thứ khác

Thả người dùng

Nếu bạn cần loại bỏ một người dùng, quá trình này tương tự như loại bỏ cơ sở dữ liệu. Ví dụ sau đây cho thấy cách loại bỏ người dùng test