Để bắt đầu chỉnh sửa các đặc quyền trong MySQL, trước tiên bạn phải đăng nhập vào máy chủ của mình, sau đó kết nối với máy khách mysql
. Thông thường, bạn sẽ muốn kết nối với root
hoặc bất kỳ tài khoản nào là tài khoản 'siêu người dùng' chính, ban đầu của bạn có toàn quyền truy cập trong toàn bộ quá trình cài đặt MySQL
Thông thường, người dùng root
sẽ được chỉ định mật khẩu xác thực khi cài đặt MySQL, nhưng nếu không phải như vậy, bạn nên thực hiện các bước để tăng cường bảo mật bằng cách thêm mật khẩu root
như được minh họa trong tài liệu chính thức
Kết nối với Công cụ dòng lệnh MySQL
Đối với ví dụ này, chúng tôi sẽ giả sử root
là tài khoản MySQL chính. Để bắt đầu sử dụng MySQL Command-Line Tool [_______0_______1], hãy kết nối với máy chủ của bạn với tư cách là người dùng root
, sau đó đưa ra lệnh mysql
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 [Ubuntu]
[...]
mysql>
Nếu thành công, bạn sẽ thấy một số đầu ra về kết nối MySQL của mình và hướng xuống dấu nhắc mysql
Ghi chú. Trong trường hợp bạn không thể kết nối trực tiếp với máy chủ với tư cách là người dùng root
trước khi kết nối với mysql
, bạn có thể chỉ định người dùng mà bạn muốn kết nối bằng cách thêm cờ
$ mysql --user=username
7$ mysql --user=username
Cấp đặc quyền
Bây giờ bạn đang ở dấu nhắc
$ mysql --user=username
1, bạn chỉ cần đưa ra lệnh $ mysql --user=username
9 với các tùy chọn cần thiết để áp dụng các quyền thích hợpCác loại đặc quyền
Lệnh
$ mysql --user=username
9 có khả năng áp dụng nhiều đặc quyền khác nhau, mọi thứ từ khả năng đối với _7_______1 bảng và cơ sở dữ liệu, đọc hoặc ghi mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
2 và thậm chí cả máy chủ ______7_______3. Có nhiều loại cờ và tùy chọn có sẵn cho lệnh, vì vậy bạn có thể muốn tự làm quen với những gì $ mysql --user=username
9 thực sự có thể làm bằng cách duyệt qua tài liệu chính thứcĐặc quyền dành riêng cho cơ sở dữ liệu
Trong hầu hết các trường hợp, bạn sẽ cấp đặc quyền cho người dùng MySQL dựa trên
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 cụ thể mà tài khoản đó sẽ có quyền truy cập. Ví dụ, thông lệ phổ biến là mỗi MySQL duy nhất mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 trên máy chủ sẽ có một mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
7 duy nhất của riêng nó được liên kết với nó, sao cho chỉ một mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
7 duy nhất có quyền truy cập xác thực vào một mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 duy nhất và ngược lạiĐể
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
0 đặc quyền cho một mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
7, cho phép người dùng đó toàn quyền kiểm soát một mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 cụ thể, hãy sử dụng cú pháp saumysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Với lệnh đó, chúng tôi đã nói với MySQL để
9$ mysql --user=username
4 của loạimysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
5 [do đó tất nhiên là mọi thứ]. Ghi chú. Hầu hết các bản cài đặt MySQL hiện đại không yêu cầu từ khóamysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
4 tùy chọnmysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
- Những đặc quyền này dành cho
7 và nó áp dụng cho tất cả các bảng của cơ sở dữ liệu đó, được biểu thị bằngmysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
8 theo saumysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
- Các đặc quyền này được gán cho
9 khimysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
9 đó được kết nối thông qua cục bộ, như được chỉ định bởimysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
1. Để chỉ định bất kỳ máy chủ hợp lệ nào, hãy thay thếmysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
2 bằngmysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
3mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Thay vì cung cấp tất cả các đặc quyền cho toàn bộ cơ sở dữ liệu, có lẽ bạn chỉ muốn cung cấp cho người dùng
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
4 khả năng đọc dữ liệu [_______28_______5] từ bảng mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
6 của cơ sở dữ liệu mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
7. Điều đó sẽ dễ dàng được thực hiện như vậymysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Tạo một siêu người dùng khác
Mặc dù không đặc biệt an toàn, nhưng trong một số trường hợp, bạn có thể muốn tạo một 'siêu người dùng' khác, có TẤT CẢ các đặc quyền trên TẤT CẢ các cơ sở dữ liệu trên máy chủ. Điều đó có thể được thực hiện tương tự như trên, nhưng bằng cách thay thế
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
7 bằng dấu hoa thị ký tự đại diệnmysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Bây giờ
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
4 có các đặc quyền giống như tài khoản root
mặc định, hãy cẩn thậnLưu thay đổi của bạn
Là bước cuối cùng sau bất kỳ cập nhật nào đối với các đặc quyền của người dùng, hãy đảm bảo lưu các thay đổi bằng cách đưa ra lệnh
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected [0.01 sec]
1 từ dấu nhắc mysql