มีวิธีลับในการผูก MySQL กับที่อยู่ IP มากกว่าหนึ่งที่อยู่หรือไม่?
เท่าที่ฉันเห็นพารามิเตอร์ที่อยู่ผูกใน my.cnf ไม่สนับสนุน IP มากกว่าหนึ่งและคุณไม่สามารถมีมากกว่าหนึ่งครั้ง
มีวิธีลับในการผูก MySQL กับที่อยู่ IP มากกว่าหนึ่งที่อยู่หรือไม่?
เท่าที่ฉันเห็นพารามิเตอร์ที่อยู่ผูกใน my.cnf ไม่สนับสนุน IP มากกว่าหนึ่งและคุณไม่สามารถมีมากกว่าหนึ่งครั้ง
คำตอบ:
ไม่ไม่มี (ฉันเพิ่งตรวจสอบ 1 ชั่วโมงที่ผ่านมา) คุณสามารถแสดงความคิดเห็นที่อยู่ผูกใน my.cnf:
#skip-networking
#bind-address = 127.0.0.1
หากคุณต้องการเพียง 2 IP คุณจะต้องใช้ไฟร์วอลล์
socket
และbind-address
ตัวเลือก
การผูกกับ 127.0.0.x จะไม่ทำให้อุปกรณ์ทั้งหมดสามารถใช้ได้ในพื้นที่เท่านั้น หากคุณต้องการให้มันพร้อมใช้งานสำหรับทุกอินเตอร์เฟสคุณควรใช้ 0.0.0.0 หากคุณต้องการเข้าถึงมากกว่าหนึ่ง แต่น้อยกว่าอินเทอร์เฟซทั้งหมดคุณควรผูกกับ 0.0.0.0 และไฟร์วอลล์ปิดอินเทอร์เฟซที่คุณไม่ต้องการเข้าถึงผ่าน
นอกจากนี้ในการรักษาความปลอดภัยชั้นที่สองคุณควรตรวจสอบให้แน่ใจว่าผู้ใช้ MySQL ทั้งหมดของคุณมีฟิลด์โฮสต์ตั้งไว้เป็นอย่างอื่นนอกเหนือจาก% (เช่นโฮสต์ใด ๆ )
INADDR_ANY (0.0.0.0) means any address for binding;
?
/etc/mysql/conf.d/bindaddress.cnf
ไฟล์ที่มีเนื้อหา[mysqld] \n bind-address = 0.0.0.0
คุณไม่สามารถผูกกับที่อยู่ IP ได้มากกว่าหนึ่งที่อยู่ แต่คุณสามารถผูกกับที่อยู่ IP ที่มีทั้งหมดแทน ถ้าเป็นเช่นนั้นเพียงใช้0.0.0.0
ที่อยู่ที่มีผลผูกพันในไฟล์กำหนดค่า MySQL ของคุณ (เช่น /etc/mysql/my.cnf) ดังต่อไปนี้:
bind-address = 0.0.0.0
หากที่อยู่คือ 0.0.0.0 เซิร์ฟเวอร์ยอมรับการเชื่อมต่อ TCP / IP บนอินเตอร์เฟสเซิร์ฟเวอร์โฮสต์ IPv4 ทั้งหมด
นอกจากนี้หากที่อยู่นั้น::
เซิร์ฟเวอร์ยอมรับการเชื่อมต่อ TCP / IP บนเซิร์ฟเวอร์โฮสต์ทั้งหมดอินเตอร์เฟส IPv4 และ IPv6 ใช้ที่อยู่นี้เพื่ออนุญาตการเชื่อมต่อทั้ง IPv4 และ IPv6 บนอินเทอร์เฟซเซิร์ฟเวอร์ทั้งหมด
หรือคุณสามารถคอมbind-address=
เม้นต์โดยสิ้นเชิงดังนั้นมันจะผูกกับที่อยู่ทั้งหมด แต่ให้แน่ใจว่าคุณไม่ได้skip-networking
เปิดใช้งานใน my.cnf ของคุณหากคุณต้องการอนุญาตการเชื่อมต่อระยะไกลเช่นกัน (อ่านเพิ่มเติม: MySQL: อนุญาตการเชื่อมต่อทั้งระยะไกลและท้องถิ่น )
หลังจากเปลี่ยนที่อยู่รวมแล้วอย่าลืมรีสตาร์ทเซิร์ฟเวอร์ MySQL ด้วย:
sudo service mysql restart
ในที่สุดคุณสามารถพิจารณาที่จะเรียกใช้ MySQL หลายอินสแตนซ์ในเครื่องเดียว (พอร์ตที่ต่างกัน) ด้วยการจำลองแบบ Master / Slave การจำลองแบบช่วยให้ข้อมูลจากเซิร์ฟเวอร์ฐานข้อมูล MySQL หนึ่งตัว (ต้นแบบ) สามารถคัดลอกไปยังเซิร์ฟเวอร์ฐานข้อมูล MySQL หนึ่งตัวหรือมากกว่า (ทาส)
อ่านเพิ่มเติม:
ไม่คุณไม่สามารถ. หน้าที่คุณลิงก์ไปยังสถานะที่ชัดเจน:
ที่อยู่ IP ที่จะผูกไว้ สามารถเลือกได้เพียงที่อยู่เดียวเท่านั้น หากระบุตัวเลือกนี้หลายครั้งระบบจะใช้ที่อยู่สุดท้ายที่ให้ไว้
หากไม่ได้ระบุที่อยู่หรือ 0.0.0.0 เซิร์ฟเวอร์จะรับฟังบนอินเทอร์เฟซทั้งหมด
ตามที่คนอื่น ๆ ตอบแล้วยังไม่มีวิธีผูกมัดกับอินเตอร์เฟซมากกว่าหนึ่งรายการอย่างเด็ดขาด
Linux มีเครื่องมือ TCP บางตัวที่ทำให้เป็นไปได้ ในการตั้งค่านี้คุณจะต้องกำหนดค่า mysql ให้รับฟังบน 127.0.0.1 จากนั้นใช้redirเพื่อแสดงบนอินเตอร์เฟสโดยพลการ
ฉันใช้สิ่งนี้เพื่อช่วยผู้ใช้กล่องเสมือนดู mysql ติดตั้งบนเครื่องโฮสต์
redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &
ฉันคิดว่าคำถามของคุณเกี่ยวข้องกับข้อผิดพลาดนี้http://bugs.mysql.com/bug.php?id=14979 รายงานข้อผิดพลาดแนะนำวิธีแก้ไขปัญหาบางอย่าง
ก่อนหน้า MySQL 8.0.13 - ผูกที่อยู่ยอมรับค่าที่อยู่เดียวซึ่งอาจระบุที่อยู่ IP ที่ไม่ใช่ wildcard เดียวหรือชื่อโฮสต์หรือหนึ่งในรูปแบบที่อยู่ของสัญลักษณ์ตัวแทนที่อนุญาตให้รับฟังในอินเตอร์เฟซเครือข่ายหลาย (*, 0.0 .0.0 หรือ: :)
ในฐานะของ MySQL 8.0.13, - ผูกอยู่ยอมรับค่าเดียวตามที่อธิบายไว้หรือรายการของค่าคั่นด้วยเครื่องหมายจุลภาค เมื่อตัวเลือกตั้งชื่อรายการหลายค่าแต่ละค่าจะต้องระบุที่อยู่ IP หรือชื่อโฮสต์ที่ไม่ใช่อักขระตัวแทนเดียว ไม่มีใครสามารถระบุรูปแบบที่อยู่ของสัญลักษณ์แทน (*, 0.0.0.0 หรือ: :)
ที่มา: https://dev.mysql.com/doc/refman/8.0/en/server-options.html
ในmy.cnfเปลี่ยนแปลง (ปกติ /etc/mysql/my.cnf บน Linux หรือ Windows ตรวจสอบนี้คำตอบ
bind-address = 127.0.0.1
ไปยัง
bind-address = 0.0.0.0
จากนั้นรีสตาร์ท mysql (บนบริการ Ubuntu mysql รีสตาร์ท ) บน windows โดยปกติบริการรีสตาร์ทผ่านWin + R services.msc
0.0.0.0 บอกให้ผูก IP ที่มีอยู่ทั้งหมดพร้อมกับพอร์ตที่กำหนดใน my.cnf