Trong thực tế, ba tài khoản người dùng đó thực sự khá nguy hiểm. Họ đặt ra một mối đe dọa rất lớn để kiểm tra cơ sở dữ liệu.
Thật không may, mysql đi kèm với quyền truy cập đầy đủ vào cơ sở dữ liệu thử nghiệm. Làm thế nào bạn có thể tìm thấy chúng?
Chạy truy vấn này:
SELECT user,host,db from mysql.db;
Khi cài đặt mysql, bạn sẽ thấy hai hàng cung cấp quyền truy cập đầy đủ vào bất kỳ cơ sở dữ liệu nào có tên 'test' hoặc có 5 ký tự đầu tiên là 'test_'.
Tại sao điều này là một vấn đề ???
Hãy thử chạy lệnh này:
$ mysql -u'' -Dtest
Bạn sẽ kết nối cơ sở dữ liệu kiểm tra mà không cần mật khẩu.
Bây giờ, tạo một bảng và tải nó với một hàng:
CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);
OK, vấn đề lớn. Bạn có thể tăng gấp đôi bảng này trong kích thước 30 lần ???
INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;
Bạn được những gì ?? Một bảng có 1.073.741.824 hàng. Dễ dàng, 4GB +.
Hãy tưởng tượng tạo ra bất kỳ bảng có kích thước bất kỳ. Làm thế nào về việc tạo ra một loạt các bảng trong cơ sở dữ liệu thử nghiệm và tự do truy cập chúng theo ý muốn?
Điều tốt nhất bạn có thể làm trong những trường hợp này là chạy truy vấn này:
DELETE FROM mysql.db;
và khởi động lại mysql. Sau đó, ba tài khoản đó sẽ được kết xuất không hoạt động.
Hãy thử một lần !!!
CẬP NHẬT 2011-09-12 10:00 EDT
Điều này xóa:
DELETE FROM mysql.db;
FLUSH PRIVILEGES;
chỉ là những gì bạn cần cho một cài đặt ban đầu. Tuy nhiên, nếu bạn đã có người dùng được thiết lập, bạn có thể chạy cái này thay thế:
DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;
Điều này sẽ loại bỏ hai quyền DB cụ thể.
Như tôi đã đề cập trong câu trả lời của mình, ba quyền rất nguy hiểm cho cơ sở dữ liệu thử nghiệm. Chạy DELETE này sẽ vô hiệu hóa các tài khoản đó để có toàn quyền kiểm tra cơ sở dữ liệu.