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

Cách cấp tất cả các đặc quyền trên cơ sở dữ liệu trong MySQL

Để 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 và sau đó kết nối với mysql khách hàng. 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.

Điển hình là root người dùng sẽ được chỉ định mật khẩu xác thực khi MySQL được cài đặt, 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 của mình bằng cách thêm root mật khẩu như được minh họa trong tài liệu chính thức.

Kết nối với MySQL Command-Line Tool

Đối với ví dụ này, chúng tôi sẽ giả sử là root là tài khoản MySQL chính. Để bắt đầu sử dụng MySQL Command-Line Tool (mysqlcli ), kết nối với máy chủ của bạn dưới dạng root người dùng, sau đó phát hành mysql lệnh:

$ 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à đang úp xuống mysql nhắc nhở.

Lưu ý:Trong trường hợp bạn không thể kết nối trực tiếp với máy chủ làm root người dùng trước khi kết nối với mysql , bạn có thể chỉ định người dùng bạn muốn kết nối as bằng cách thêm --user= cờ:

$ mysql --user=username

Cấp Đặc quyền

Bây giờ bạn đang ở mysqlcli nhắc, bạn chỉ cần phát hành GRANT lệnh với các tùy chọn cần thiết để áp dụng các quyền thích hợp.

Các loại đặc quyền

GRANT lệnh có khả năng áp dụng nhiều đặc quyền, mọi thứ từ khả năng CREATE bảng và cơ sở dữ liệu, đọc hoặc ghi FILES và thậm chí là SHUTDOWN máy chủ. 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ì GRANT thực sự có thể làm được 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 database cụ thể tài khoản đó phải có quyền truy cập. Đó là thông lệ, ví dụ, đối với mỗi cơ sở dữ liệu MySQL database duy nhất trên máy chủ để có user duy nhất của riêng nó được liên kết với nó, sao cho chỉ một user duy nhất có quyền truy cập xác thực vào một database duy nhất và ngược lại.

Để GRANT ALL đặc quyền đối với user , cho phép người dùng đó toàn quyền kiểm soát một database cụ thể , sử dụng cú pháp sau:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

Với lệnh đó, chúng tôi đã yêu cầu MySQL:

  • GRANT PRIVILEGES thuộc loại ALL (tất nhiên là tất cả mọi thứ). Lưu ý:Hầu hết các cài đặt MySQL hiện đại không yêu cầu PRIVILEGES tùy chọn từ khóa.
  • Các đặc quyền này dành cho database_name 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ằng .* sau đó.
  • Các đặc quyền này được chỉ định cho username khi username đó được kết nối thông qua cục bộ, như được chỉ định bởi @'localhost' . Để chỉ định bất kỳ máy chủ hợp lệ nào, hãy thay thế 'localhost' với '%' .

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 muốn cấp cho tolkien chỉ người dùng khả năng đọc dữ liệu (SELECT ) từ authors bảng của books cơ sở dữ liệu. Điều đó sẽ được thực hiện dễ dàng như vậy:

mysql> 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ơ 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ế database_name với dấu hoa thị ký tự đại diện:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';

Bây giờ tolkien có các đặc quyền giống như root mặc định tài khoản, hãy cẩn thận!

Lưu thay đổi của bạn

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 nhớ lưu các thay đổi bằng cách phát hành FLUSH PRIVILEGES lệnh từ mysql lời nhắc:

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO - Hàng số

  2. Kiểm tra xem bảng MySQL có tồn tại mà không sử dụng cú pháp select from hay không?

  3. Cách hiển thị giá trị hàng dưới dạng cột trong MySQL

  4. Làm cách nào để trả về kết quả đầu ra của bảng tổng hợp trong MySQL?

  5. Các phương pháp tiếp cận sharding với MySQL?