Ngay sau khi bạn cài đặt MySQL, bạn sẽ có root
người dùng có sẵn.
Đây là người dùng mà bạn có thể sử dụng để thử và xem MySQL có hoạt động hay không, nhưng đó không phải là người dùng cho các kiểu sử dụng khác.
Tại sao? Vì nó quá mạnh .
Với sức mạnh to lớn đi kèm với trách nhiệm lớn (chú của Người Nhện nói). Và đặc biệt, rất nguy hiểm nếu bạn mắc sai lầm.
Thay vào đó, bạn nên tạo người dùng đặc biệt chỉ có quyền thực hiện công việc của họ và không hơn thế nữa. Tương tự khi sử dụng Linux hoặc bất kỳ hệ thống Unix nào, ví dụ:bạn không muốn sử dụng root
người dùng, nhưng tài khoản người dùng của chính bạn.
Để tạo người dùng mới, hãy kết nối với MySQL bằng root
người dùng:
mysql -u root -p
sau đó sử dụng lệnh
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
Ví dụ:để tạo người dùng có tên test_user
với mật khẩu test_password12A
chạy lệnh:
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'test_password12A';
Lệnh sẽ trả về một dòng có nội dung Query OK, 0 rows affected (X.XX sec)
:
Nếu bạn sử dụng mật khẩu không hợp lệ, hệ thống sẽ cho bạn biết điều gì đó giống như ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
. Trong trường hợp này, lỗi cho biết mật khẩu không đủ phức tạp, bởi vì khi tôi cài đặt MySQL, tôi đã yêu cầu nó sử dụng một chính sách nhất định về mật khẩu.
Thật tuyệt! Bây giờ người dùng đã được tạo và chúng tôi có thể kết nối bằng cách sử dụng người dùng đó với MySQL. Từ dòng lệnh, bạn có thể thoát bằng cách nhập QUIT
và nhập:
mysql -u test_user -p
Bây giờ nếu tôi cố gắng tạo cơ sở dữ liệu, tôi sẽ gặp lỗi nói rằng ERROR 1044 (42000): Access denied for user 'test_user'@'localhost' to database 'testing'
:
Tại sao? Vì người dùng không có quyền tạo cơ sở dữ liệu mới .
Chúng ta sẽ xem cách làm việc với các quyền trong một hướng dẫn khác.
Điều đáng nói là @'localhost'
chuỗi chúng tôi đã sử dụng để tạo người dùng. Điều này cho MySQL biết rằng người dùng chỉ có thể kết nối từ localhost. Điều này tốt khi kiểm tra mọi thứ và khi bất kỳ ứng dụng nào sẽ kết nối với MySQL đang chạy trên cùng một máy tính chạy DBMS.
Khi điều này không đúng, bạn cần phải nhập thủ công IP mà người dùng sẽ kết nối từ đó hoặc sử dụng %
ký tự đại diện:
CREATE USER 'test_user'@'%' IDENTIFIED BY 'test_password12A';
Tôi muốn kết thúc hướng dẫn này bằng cách chỉ ra cách xóa người dùng mà chúng tôi đã tạo:
DROP USER 'test_user'@'localhost';