Score:0

ข้อผิดพลาดการเชื่อมต่อตัวเชื่อมต่อ MySQL/ODBC หลังจาก DNS ไม่ตรงกัน

ธง cn

ฉันมีปัญหาในการกำหนดค่าการเชื่อมต่อ MySQL ใหม่ด้วย แหล่งข้อมูล ODBC (64 บิต) ยูทิลิตี้บน Windows Server 2019 ฉันใช้อยู่ ปรับแต่ง MySQL เพื่อกำหนดการเข้าถึงระยะไกลดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ผู้ใช้จะได้รับ เลือก เข้าถึงได้เท่านั้น:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันสังเกตเห็นว่าเซิร์ฟเวอร์ที่ฉันต้องเริ่มต้นการเชื่อมต่อ (srv-บ่อ) มีที่อยู่ IP แบบคงที่ที่เซิร์ฟเวอร์อื่นเคยใช้ในอดีต (srv-mooc). รายการเซิร์ฟเวอร์ระยะไกลแบบโบราณยังคงอยู่ในตัวควบคุมโดเมน DNS ดังนั้นฉันจึงลบออก ตั้งแต่นั้นเป็นต้นมา แหล่งข้อมูล ODBC (64 บิต) ยูทิลิตี้พยายามเชื่อมต่อกับชื่อเซิร์ฟเวอร์โบราณ (srv-mooc)... ดูเหมือนว่าข้อมูลการเชื่อมต่อบางอย่างจะถูกเก็บไว้ในความทรงจำที่ไหนสักแห่ง แต่ฉันไม่สามารถเข้าใจได้

จนถึงตอนนี้ ฉันได้พยายามล้างแคช DNS บน Windows Server 2019 ที่ฉันเริ่มต้นการเชื่อมต่อ ฉันได้ลองตั้งค่าการเชื่อมต่อจากเซสชันผู้ใช้อื่นและหลังจากรีบูตเซิร์ฟเวอร์ ปัญหายังคงมีอยู่:

ป้อนคำอธิบายรูปภาพที่นี่

ข้อความผิดพลาด:

ป้อนคำอธิบายรูปภาพที่นี่

ข้อมูลรับรองผู้ใช้ทำงานได้ดีจาก Windows Server 2019 อื่น ดังนั้นรายละเอียดการเชื่อมต่อจึงดี

มีความคิดที่จะช่วย?

โทมัส

vidarlo avatar
ar flag
ปรากฏว่าผู้ใช้ไม่ได้รับอนุญาตให้เข้าสู่ระบบจากโฮสต์ที่เชื่อมต่ออยู่ สิ่งนี้จะอธิบายว่าทำไมมันถึงใช้งานได้จากเครื่องอื่น ฝั่งเซิร์ฟเวอร์กำหนดโดยผู้ใช้อย่างไร https://www.javatpoint.com/mysql-show-users
wiltomap avatar
cn flag
ขอบคุณ. ผู้ใช้ได้รับอนุญาตจริงฉันได้อนุญาตเซิร์ฟเวอร์ `srv-abc` เท่านั้นที่ผู้ใช้สามารถเข้าถึงฐานข้อมูลได้ หากฉันลบตัวกรองนี้และอนุญาตเซิร์ฟเวอร์ใด ๆ ปัญหาก็จะไม่มีอีกต่อไป... ดูเหมือนว่าจะเป็นปัญหาของ DNS
vidarlo avatar
ar flag
ข้อความแสดงข้อผิดพลาดแจ้งว่าผู้ใช้กำลังเชื่อมต่อจาก `srv-mooc.siveer.fr`...
wiltomap avatar
cn flag
ขออภัย ฉันได้แก้ไขโพสต์เริ่มต้นของฉันเพื่อให้ชัดเจนขึ้น
vidarlo avatar
ar flag
ไม่มีเหตุผลที่จะต้องเสียใจ :) คำถามของฉันคือทำให้คำถามดีขึ้น - และทำให้มีโอกาสมากขึ้นที่คุณจะได้คำตอบที่ดี :) มันง่ายที่จะมองข้ามรายละเอียดในสิ่งที่เราเขียน!
Manu avatar
us flag
คุณสามารถค้นหา DNS ย้อนกลับได้ไหม ไม่รู้ว่าจำเป็นไหม แต่อาจจะใช่ เขียน srv-bo% ด้วยตัวอักษรขนาดเล็ก ... เผื่อไว้ ;)
wiltomap avatar
cn flag
การค้นหา DNS แบบย้อนกลับนั้นใช้ได้และชี้ไปที่ชื่อเซิร์ฟเวอร์ที่ถูกต้อง `srv-bo%` เป็นตัวพิมพ์เล็กไม่เปลี่ยนแปลงอะไร...
cn flag
เซิร์ฟเวอร์ MySQL เชื่อมโยงกับช่วง IP เฉพาะหรือไม่
wiltomap avatar
cn flag
ใช่ แต่เป็นช่วงคลาสสิกของที่อยู่ 254 ที่อยู่ ซึ่งรวมเซิร์ฟเวอร์ทั้งสอง (แบบเก่าและแบบจริง)
Score:1
ธง us

ค่อนข้างเป็นไปได้ที่ MySQL กำลังรักษาแคช DNS ภายในของโฮสต์ สำหรับการทดสอบที่รวดเร็วและสกปรก ให้ลอง ตั้งค่า GLOBAL host_cache_size=0; บนเซิร์ฟเวอร์ (หากการโหลด DNS เป็นปัญหา อย่าลืมรีเซ็ตเป็นค่าที่ไม่เป็นศูนย์หลังการทดสอบ)

แก้ไข: สำหรับ 5.5 MySQL ลอง a ล้างโฮสต์;

อ้างอิง: https://dev.mysql.com/doc/refman/8.0/en/host-cache.html#host-cache-flushing http://download.nust.na/pub6/mysql/doc/refman/5.5/en/dns.html

wiltomap avatar
cn flag
ความคิดที่ดี! ...แต่ (ขออภัย) ตาราง `mysql.host` บนเซิร์ฟเวอร์ระยะไกลว่างเปล่า (ฉันเดาว่า `host_cache_size` ถูกตั้งค่าเป็น 0 แล้ว) บนเซิร์ฟเวอร์ที่ฉันเริ่มต้นการเชื่อมต่อ ฉันไม่มีโลคัลอินสแตนซ์ของ MySQL
Brandon Xavier avatar
us flag
หากคุณกำลังตรวจสอบตารางด้วยตนเอง คุณจะต้องดูที่ `mysql.host_cache` ซึ่งตรงข้ามกับ `mysql.host`
wiltomap avatar
cn flag
ฉันไม่มีตารางดังกล่าว... เวอร์ชัน MySQL คือ 5.5.62
Brandon Xavier avatar
us flag
ดูการแก้ไขสำหรับ 5.5 MySQL (ซึ่งจะเป็นประโยชน์ที่จะรู้ล่วงหน้า :-)
Brandon Xavier avatar
us flag
หนึ่งความคิดเห็นสุดท้าย `host_cache` ถูกเปิดเผยจริง (ในเวอร์ชัน >= 5.6) ผ่าน `performance_schema` pseudo DB ไม่ผ่าน `mysql` (มันแมปโครงสร้างข้อมูลในหน่วยความจำกับตารางที่เหมือน SQL)
Score:0
ธง ng

คุณสามารถลองแก้ไขไฟล์นี้ได้ C:\Windows\System32\drivers\etc\hosts ซึ่งเก็บบันทึก DNS ในเครื่องทั้งหมด นอกจากนี้ โปรดตรวจสอบว่าเซิร์ฟเวอร์ DNS ใดที่ Windows ใช้อยู่ในปัจจุบัน ดูเหมือนว่าจะมีบันทึก PTR อยู่ที่ไหนสักแห่ง

wiltomap avatar
cn flag
ฉันเดาว่าไฟล์ `hosts` เป็นไฟล์เริ่มต้น (ทุกบรรทัดมีการแสดงความคิดเห็นและไม่มี `srv-mooc`) ฉันไม่พบรายการเลยภายใน DNS ของตัวควบคุมโดเมน คำสั่ง `nslookup` ส่งคืนชื่อเซิร์ฟเวอร์ที่ถูกต้อง ไม่ใช่ชื่อเก่า ฉันไม่พบบันทึก PTR ทุกที่...
Zhivko Zhelev avatar
ng flag
เมื่อคุณสร้างกฎเพื่อบล็อกการเชื่อมต่ออื่น ๆ คุณจะระบุชื่อโฮสต์ของการเชื่อมต่อที่อนุญาตได้อย่างไร
wiltomap avatar
cn flag
ฉันป้อน `srv-bo%` เนื่องจากฉันต้องการเซิร์ฟเวอร์อื่นชื่อ `srv-bo-rct` เพื่อให้สามารถเชื่อมต่อได้ ฉันพยายามป้อน `srv-bo` โดยไม่ใช้สัญลักษณ์แทน แต่ปัญหายังคงอยู่
Zhivko Zhelev avatar
ng flag
ฉันไม่แน่ใจว่าวิธีนี้จะทำงานอย่างไร ฉันขอแนะนำให้คุณอนุญาตโฮสต์ทั้งสองแยกจากกันโดยใช้ชื่อเต็ม สิ่งนี้ควรทำงาน กรุณาตรวจสอบคำตอบ
wiltomap avatar
cn flag
ไม่มันไม่ได้ อย่างที่ฉันเขียนไว้ในความคิดเห็นที่แล้ว ฉันลองป้อน `srv-bo` เพียงอย่างเดียวและพบข้อผิดพลาดเดียวกัน
Zhivko Zhelev avatar
ng flag
``` ให้สิทธิพิเศษทั้งหมดบนฐานข้อมูลของคุณ* เพื่อ srv-mooc@'srv-mooc.siveer.fr' ระบุโดย 'รหัสผ่าน';``` แบบนี้ใช่ไหม
wiltomap avatar
cn flag
ฉันใช้ *MySQL Workbench* เพื่อกำหนดการเข้าถึงระยะไกล ดังนั้นสิ่งนี้จึงถูกกำหนดภายในอินเทอร์เฟซแอปพลิเคชันนี้ ภายในฟิลด์การกรอง
wiltomap avatar
cn flag
เพิ่งอัปเดตโพสต์เริ่มต้นด้วยภาพหน้าจอสำหรับ *MySQL Workbench*
Zhivko Zhelev avatar
ng flag
ดีกว่า โปรดป้อน ```ชื่อโฮสต์``` ในพรอมต์คำสั่งบนเซิร์ฟเวอร์ windows
Zhivko Zhelev avatar
ng flag
และเป็นไปได้ไหมที่จะสร้างผู้ใช้ที่แตกต่างกันสองคนสำหรับ db และระบุชื่อโฮสต์แบบเต็ม
wiltomap avatar
cn flag
คำสั่ง `ชื่อโฮสต์` ส่งคืน `SRV-BO` ตามที่คาดไว้ การสร้างผู้ใช้ใหม่ที่กรองจาก `SRV-BO` จะให้ข้อผิดพลาดเดียวกันเท่านั้น ฉันได้พยายามอนุญาตเซิร์ฟเวอร์ใด ๆ โดยป้อนไวด์การ์ด `%` เท่านั้น แต่ไม่สำเร็จอีกต่อไป...
Zhivko Zhelev avatar
ng flag
ลองให้สิทธิ์เพิ่มเติมกับผู้ใช้รายนี้ ```srv-bo```
wiltomap avatar
cn flag
ผลลัพธ์เดียวกัน น่าเสียดาย...
Zhivko Zhelev avatar
ng flag
ฉันคิดว่ามีบางอย่างขัดข้องกับการตั้งค่า DNS ที่คุณพูดเมื่อคุณลบบันทึกเก่านี้หลังจากที่ปัญหาปรากฏขึ้น ดังนั้นโปรดตรวจสอบอีกครั้ง
wiltomap avatar
cn flag
ปัญหาเกิดขึ้นเสมอ ทั้งก่อนและหลังการลบรายการ DNS ที่ไม่ต้องการ ฉันคิดว่าฉันไม่ควรพยายามเริ่มต้นการเชื่อมต่อก่อนที่จะลบรายการ DNS อย่างที่ฉันเขียนไว้ในโพสต์ของฉัน ฉันคิดว่าแคชบางอย่างถูกเก็บไว้ที่ไหนสักแห่ง แต่ไม่ได้อยู่ในตำแหน่งหรือไฟล์ปกติ...
Zhivko Zhelev avatar
ng flag
นี่เป็นเรื่องแปลกเนื่องจากการสืบค้น DNS ทั้งหมดมี ttl(time to live) ซึ่งอาจสูงสุดได้ 3600 วินาที และหากเวลานี้ผ่านไป ควรแก้ไขชื่อโฮสต์ใหม่... แนวคิด: สร้างระเบียน CNAME จาก ```srv-mooc.siveer fr ไปที่ srv-bo.siveer.fr และดูว่าวิธีนี้ใช้ได้หรือไม่
Score:0
ธง cn

หลังจากการค้นหามากมายและความช่วยเหลือที่มีค่าในความคิดเห็นต่างๆ ในที่สุดฉันก็สามารถแก้ไขปัญหาได้โดยดำเนินการ a ล้างโฮสต์; แบบสอบถาม SQL ภายในตัวแก้ไขแบบสอบถามบนเซิร์ฟเวอร์ระยะไกล

ดูเอกสาร MySQL 5.5 ที่นี่.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา