MySQL: tạo người dùng có thể kết nối từ nhiều máy chủ


30

Tôi đang sử dụng MySQL và tôi cần tạo một tài khoản có thể kết nối từ localhost hoặc từ một máy chủ khác, tức là 10.1.1.1. Vì vậy, tôi đang làm:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

Điều này hoạt động tốt, nhưng có cách nào thanh lịch hơn để tạo một tài khoản người dùng được liên kết với nhiều IP hay nó cần phải được thực hiện theo cách này?

Lo lắng chính của tôi là trong tương lai, các quyền sẽ được cập nhật cho một tài khoản 'bob' chứ không phải tài khoản khác.

Câu trả lời:


20

Nếu bạn muốn hạn chế lưu trữ và không muốn chỉ định dựa trên mạng con hoặc ký tự đại diện bằng cách sử dụng %, đó là cách duy nhất để làm điều đó. Thêm chi tiết có sẵn trong tài liệu MySQL .

Tôi vẫn đang cố gắng tìm cách loại bỏ chi phí khi quản lý xác thực đối với các cài đặt MySQL lớn và vẫn chưa tìm được giải pháp hoàn hảo.


8

Hãy bắt đầu bằng cách tạo một người dùng mới gọi là "chaminda" trong shell MySQL:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

Điều đầu tiên cần làm là cung cấp cho người dùng sự cho phép cần thiết và ở đây tôi đã trao tất cả quyền cho người dùng cụ thể.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

Tải lại tất cả các đặc quyền.

FLUSH PRIVILEGES;

Nếu bạn muốn cho phép phạm vi IP cho một người dùng cụ thể sử dụng như sau 10.1.1.%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

Lưu ý: Tại đây Tên máy chủ =% và điều đó có nghĩa là bạn có thể truy cập máy chủ cơ sở dữ liệu này từ bất kỳ máy chủ nào. Cấp tất cả các đặc quyền cho người dùng là một rủi ro lớn và đó không phải là cách tốt nhất. Hơn nữa, bạn có thể thay thế người dùng 'chaminda' thành 'bob'.


5
Điều này không trả lời câu hỏi. Nó cấp quyền truy cập cho người dùng từ tất cả các IP, nhưng OP đang hỏi về một cách thanh lịch hơn để cho phép một người dùng truy cập cơ sở dữ liệu từ danh sách IP. Về cơ bản, thay vì nhiều câu lệnh để thêm một người dùng nhiều lần từ nhiều IP, ý tưởng là thêm một người dùng có thể truy cập cơ sở dữ liệu từ nhiều IP, giúp việc quản lý dễ dàng hơn và ít xảy ra lỗi hơn.
Anthony

Bạn cũng có thể sử dụng _ làm ký tự đại diện như 10.1.1.1__ để khớp 100 -199 nhưng với 200 bạn cần tạo tài khoản riêng hoặc sử dụng% ký tự đại diện và bao gồm 0-99 và 201-255 nữa
Chaminda Bandara

-3

MySQL cho phép nhiều ký tự đại diện trong một hàng. Một giải pháp khả thi là đặt Host cho người dùng Bobthành

locahost/10.1.1.1

Tài liệu tham khảo:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html


Đó không phải là những gì tài liệu đang nói. Như được liệt kê trong bảng, /255.255.255.0 là một netmask. Nếu có một cách để liệt kê nhiều ký tự đại diện trong định nghĩa máy chủ, thì đó không phải là cách để làm điều đó.
Majikman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.