ผู้ใช้ MySQL คนใดจำเป็น?


13

เซิร์ฟเวอร์ MySQL ของฉันมีผู้ใช้แปลก ๆ จำนวนมากซึ่งฉันไม่ได้เพิ่ม สิ่งเหล่านี้จำเป็นหรือไม่

'root'@'127.0.0.1'
'root'@'localhost'
'root'@'SERVERNAME'
'root'@'::1'
''@'SERVERNAME'
''@'LOCALHOST'

หากฉันลบ root ทั้งหมดยกเว้น root @ localhost ฉันจะจบการล็อคตัวเองออกจากฐานข้อมูลได้หรือไม่ และวัตถุประสงค์ของชื่อผู้ใช้ที่ว่างเปล่าคืออะไร? พวกเขาดูเหมือนจะมี 'การใช้สิทธิ์' หรือไม่

มีความแตกต่างระหว่าง 127.0.0.1 เป็นโฮสต์และ localhost หรือไม่ ถ้าฉันมี localhost เท่านั้นไม่ใช่ 127.0.0.1 นั่นหมายความว่า mysqlclient ที่ใช้ TCP / IP แทน Unix sockets จะไม่สามารถเชื่อมต่อได้หรือไม่?

คำตอบ:


16
  1. ผู้ใช้เหล่านี้ดูเหมือนจะเป็นผู้ใช้เริ่มต้นที่ถูกเพิ่มเมื่อติดตั้ง MySQL ขอแนะนำให้คุณรันmysql_secure_installationหลังจากติดตั้ง MySQL

  2. ชื่อผู้ใช้ที่ว่างเปล่า ('' @ 'SERVERNAME') แสดงถึงผู้ใช้ที่ไม่ระบุชื่อ หากคุณไม่ได้เรียกใช้mysql_secure_installationหรือตั้งรหัสผ่านทุกคนสามารถเข้าถึงได้ หากผู้ใช้ที่ไม่ระบุชื่อมีGRANT USAGEสิทธิ์แสดงว่าโดยทั่วไปแล้วหมายความว่าไม่มีสิทธิ์ แต่ก็ยังเป็นความคิดที่ดีที่จะลบการเข้าสู่ระบบแบบไม่ระบุชื่อโดยสมบูรณ์

  3. ไม่ไม่มีความแตกต่างใหญ่ระหว่าง localhost กับ 127.0.0.1 ไม่ว่าที่อยู่ IP ใดที่ผู้ใช้พยายามลงชื่อเข้าใช้จะต้องตรงกับ@[IP Address]ส่วนของชื่อผู้ใช้ หากคุณลงชื่อเข้าใช้จากเครื่องเดียวกันเซิร์ฟเวอร์ MySQL จะเปิดอยู่@localhostและ@127.0.0.1จะจับคู่กัน ในฐานะที่เป็น IVlint67 ชี้ให้เห็นในการติดตั้งบางคนจะไม่ทำงานให้ดีกว่าที่จะไปกับ@localhost@127.0.0.1


13

ฉันมักจะติดตั้งกับสคริปต์ mysql_secure_installation MySQL กำลังจัดส่งด้วยตอนนี้ ...


root@127.0.0.1 เป็นที่อยู่ IP root @ localhost คือ @ hostname เหมือนกันสำหรับชื่อเซิร์ฟเวอร์ และรูทสุดท้ายคือ @ IPv6 address สำหรับ localhost


จากเว็บไซต์ MySQL:

ความพยายามในการเชื่อมต่อกับโฮสต์ 127.0.0.1 โดยปกติแล้วจะแก้ไขไปยังบัญชี localhost อย่างไรก็ตามสิ่งนี้จะล้มเหลวหากเซิร์ฟเวอร์รันด้วยตัวเลือก --skip-name-resolve ดังนั้นบัญชี 127.0.0.1 จึงมีประโยชน์ในกรณีนี้

ชื่อผู้ใช้ที่ว่างเปล่า:

บางบัญชีมีไว้สำหรับผู้ใช้ที่ไม่ระบุชื่อ ชื่อเหล่านี้มีชื่อผู้ใช้ว่างเปล่า บัญชีที่ไม่ระบุชื่อไม่มีรหัสผ่านดังนั้นทุกคนสามารถใช้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ MySQL

http://dev.mysql.com/doc/refman/5.0/en/default-privileges.html


และในที่สุดก็:

หากฉันลบ root ทั้งหมดยกเว้น root @ localhost ฉันจะจบการล็อคตัวเองออกจากฐานข้อมูลได้หรือไม่

ใช่ แต่คุณสามารถกลับมาได้

ดู --skip-grant-tables: https://help.ubuntu.com/community/MysqlPasswordReset

ฉันควร?

ฉันไม่สนใจมันเป็นเซิร์ฟเวอร์ของคุณ หากเป็นของฉันฉันจะรักษาความปลอดภัยบัญชีรูทเช่นเดียวกับรหัสผ่านและลบบัญชีที่ไม่ระบุชื่อเว้นแต่คุณต้องการ

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