ในความเป็นจริงบัญชีผู้ใช้ทั้งสามนั้นค่อนข้างอันตราย พวกเขาเป็นภัยคุกคามที่ดีมากในการทดสอบฐานข้อมูล
น่าเสียดายที่ mysql มาพร้อมกับการเข้าถึงฐานข้อมูลทดสอบอย่างเต็มรูปแบบ คุณจะหาพวกมันได้อย่างไร
เรียกใช้แบบสอบถามนี้:
SELECT user,host,db from mysql.db;
เมื่อทำการติดตั้ง mysql คุณจะเห็นสองแถวที่ให้การเข้าถึงฐานข้อมูลใด ๆ ที่ชื่อว่า 'test' หรือตัวอักษร 5 ตัวแรกคือ 'test_'
ทำไมถึงเป็นปัญหา ???
ลองใช้คำสั่งนี้:
$ mysql -u'' -Dtest
คุณจะเชื่อมต่อฐานข้อมูลทดสอบโดยไม่ต้องใช้รหัสผ่าน
ตอนนี้สร้างตารางและโหลดด้วยแถว:
CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);
ตกลงเรื่องใหญ่ คุณสามารถเพิ่มตารางนี้เป็นสองเท่าในขนาด 30 ครั้งได้ไหม
INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;
คุณได้อะไร ตารางที่มี 1,073,741,824 แถว อย่างง่ายดาย 4GB +
ลองนึกภาพการสร้างตารางขนาดใดก็ได้ วิธีการเกี่ยวกับการสร้างกลุ่มตารางในฐานข้อมูลการทดสอบและเข้าถึงพวกเขาได้อย่างอิสระที่จะ?
สิ่งที่ดีที่สุดที่คุณสามารถทำได้ภายใต้สถานการณ์เหล่านี้คือการเรียกใช้แบบสอบถามนี้:
DELETE FROM mysql.db;
และเริ่ม mysql ใหม่ จากนั้นทั้งสามบัญชีจะแสดงผลไม่ถูกต้อง
ให้มันลอง !!!
อัพเดท 2011-09-12 10:00 EDT
การลบนี้:
DELETE FROM mysql.db;
FLUSH PRIVILEGES;
เป็นเพียงสิ่งที่คุณต้องการสำหรับการติดตั้งครั้งแรก อย่างไรก็ตามหากคุณมีผู้ใช้งานอยู่แล้วคุณสามารถเปิดใช้งานได้แทน:
DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;
สิ่งนี้จะลบการอนุญาต DB สองตัว
ตามที่ฉันกล่าวถึงในคำตอบของฉันสิทธิ์ทั้งสามมีอันตรายมากสำหรับฐานข้อมูลทดสอบ การเรียกใช้ DELETE นี้จะทำให้บัญชีเหล่านั้นเป็นกลางสำหรับการมีสิทธิ์ในการทดสอบฐานข้อมูล