หลังจากตั้งค่ารหัสผ่านรูททำไม MYSQL ยังอนุญาตให้ฉันเข้าสู่ระบบโดยไม่มีรหัสผ่าน


10

หลังจากตั้งค่ารหัสผ่านรูททำไม MYSQL ยังอนุญาตให้ฉันเข้าสู่ระบบโดยไม่มีรหัสผ่านจากบรรทัดคำสั่ง? ฉันสามารถพิมพ์ "mysql" ที่รูทยูนิกซ์พรอมต์และไม่ต้องขอรหัสผ่านและยังอนุญาตให้ฉันเข้าถึงรูทได้ ฉันไม่เข้าใจว่าทำไม "mysql -u root" ไม่ได้ถามรหัสผ่านที่ฉันตั้งไว้ในบัญชี

นอกจากนี้ฉันไม่สามารถเข้าสู่ mysql จากเครื่องระยะไกลเป็น 'root' ฉันไม่ได้กำหนดค่าอย่างถูกต้องด้านล่างหรือไม่ ฉันได้รับข้อผิดพลาด: "โฮสต์ ... ไม่ได้รับอนุญาตให้เชื่อมต่อกับเซิร์ฟเวอร์ MySQL นี้ฉันไม่ได้กำหนดค่าสำหรับ '%' หรือไม่?

นี่คือตารางผู้ใช้ของฉัน:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

คำตอบ:


4

ดูเหมือนว่ามีการตั้งรหัสผ่านใน'root'@'localhost'รายการผู้ใช้ แต่ไม่ใช่ใน'root'@'%'รายการ การตรวจสอบรหัสผ่านฟรีจะได้รับอนุญาตตามที่

เพื่อจุดประสงค์ด้านความปลอดภัยให้พิจารณาการอนุญาตให้เข้าถึงรูทได้จากทุกที่ ถ้าคุณต้องการมันก็แค่กำจัดข้อกำหนดของ localhost:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

และตั้งรหัสผ่านสำหรับ'root'@'%'ผู้ใช้:

set password for 'root'@'%' = password('passwordhere');

นั่นคือทุกสิ่งที่ฉันต้องการแล้วบางส่วน ขอบคุณ ฉันไม่แน่ใจว่าจะลบหรือไม่ปลอดภัยและคุณตอบคำถามของฉัน คำตอบที่ดี :-)
djangofan

4

คำตอบนั้นอยู่ในตารางนั้น - คุณต้องลบบรรทัด "root" ที่ไม่มีรหัสผ่านปรากฏ

และดูเหมือนว่าคุณอนุญาตการเชื่อมต่อจากทุกที่ (?!? อาจเป็นความคิดที่ไม่ดี ฉันจะทำสิ่งที่ชอบ:

mysql> use mysql;
mysql> delete from user where password = "";

2

อย่าลืมที่จะล้างสิทธิ์หรือคุณยังสามารถเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.