ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ผิดพลาด 111 [ปิด]


152

ฉันติดตั้งเซิร์ฟเวอร์ mysql บนกล่อง linux IP = 192.168.1.100 แต่เมื่อฉันพยายามที่จะเชื่อมต่อกับ IP นี้มันก็เกิดข้อผิดพลาดเสมอ (111) แต่ใช้ localhost และ 127.0.0.1 ก็โอเค

beer @ beer-laptop # ifconfig | grep "inet addr"
          inet addr: 127.0.0.1 รูปแบบ: 255.0.0.0
          inet addr: 192.168.1.100 Bcast: 192.168.1.255 รูปแบบ: 255.255.255.0

beer @ beer-laptop # mysql -ubeer -pbeer -h192.168.1.100
ข้อผิดพลาด 2003 (HY000): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ใน '192.168.1.100' (111)

beer @ beer-laptop # mysql -ubeer -pbeer -hlocalhost
ยินดีต้อนรับสู่หน้าจอ MySQL คำสั่งลงท้ายด้วย; หรือ \ g.
ID การเชื่อมต่อ MySQL ของคุณคือ 160
รุ่นเซิร์ฟเวอร์: 5.1.31-1ubuntu2 (Ubuntu)

พิมพ์ 'ความช่วยเหลือ;' หรือ '\ h' เพื่อขอความช่วยเหลือ พิมพ์ '\ c' เพื่อล้างบัฟเฟอร์

MySQL> 

beer @ beer-laptop # mysql -ubeer -pbeer -h127.0.0.1
ยินดีต้อนรับสู่หน้าจอ MySQL คำสั่งลงท้ายด้วย; หรือ \ g.
ID การเชื่อมต่อ MySQL ของคุณคือ 161
รุ่นเซิร์ฟเวอร์: 5.1.31-1ubuntu2 (Ubuntu)

พิมพ์ 'ความช่วยเหลือ;' หรือ '\ h' เพื่อขอความช่วยเหลือ พิมพ์ '\ c' เพื่อล้างบัฟเฟอร์

MySQL> 

เชื่อมต่อจากเครื่องอื่นมันยังมีข้อผิดพลาด 111

another @ another-laptop # mysql -ubeer -pbeer -h192.168.1.100
ข้อผิดพลาด 2003 (HY000): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ใน '192.168.1.100' (111)

ความแตกต่างระหว่างการใช้ localhost / 127.0.0.1 และ 192.168.1.100 อย่างไรในกรณีนี้ ฉันไม่รู้วิธีเชื่อมต่อฐานข้อมูลนี้จากเครื่องอื่น

ช่วยด้วย. ขอบคุณ.

คำตอบ:


263

อาจหมายความว่าเซิร์ฟเวอร์ MySQL ของคุณกำลังรับฟังเฉพาะอินเทอร์เฟซโฮสต์ในตัว

หากคุณมีสายเช่นนี้:

bind-address = 127.0.0.1

ในmy.cnfไฟล์กำหนดค่าของคุณคุณควรคอมเม้นต์พวกเขา(เพิ่ม # ที่จุดเริ่มต้นของบรรทัด)แล้วเริ่ม MySQL ใหม่

sudo service mysql restart

แน่นอนในการทำเช่นนี้คุณต้องเป็นผู้ดูแลเซิร์ฟเวอร์


6
เห็นได้ชัดว่าเขาไม่มีskip-networkingเส้น ;-)
Michael Krelin - แฮกเกอร์

11
ทำอย่างไรจึงจะรู้ตำแหน่ง mysql my.cnf: stackoverflow.com/questions/2482234/…
Cyril Jacquart

2
แต่จะเกิดอะไรขึ้นเมื่อคุณสามารถเชื่อมต่อกับมันได้จาก mysql workbench ผมมีปัญหาเดียวกัน.
George Pamfilis

3
ฉันติดตามสิ่งที่ได้รับคำตอบ แต่ก็ยังไม่สามารถใช้งานได้ ฉันคิดว่าพารามิเตอร์ "bind-address" อยู่ในไฟล์ "/etc/mysql/mysql.conf.d/mysqld.cnf" แสดงความคิดเห็นออกไปที่นั่นและมันใช้งานได้!
ยะห์ยา

3
รุ่นใหม่กว่าของ ubuntu> = 16.04 อาจมีบรรทัดนี้ใน /etc/mysql/mysql.conf.d/myqld.cnf
dellasavia

38

111 หมายถึงการเชื่อมต่อถูกปฏิเสธซึ่งหมายความว่า mysqld ของคุณจะรับฟังlocalhostอินเตอร์เฟสเท่านั้น

หากต้องการแก้ไขคุณอาจต้องการดูbind-addressค่าในmysqldส่วนของmy.cnfไฟล์ของคุณ


นอกจากนี้ยังควรตรวจสอบว่าหมายเลขพอร์ตนั้นถูกต้องหรือไม่ การจับคู่ไม่ตรงกัน:3306และ:3307อาจส่งผลให้เกิดข้อผิดพลาด 111 ได้เช่นกัน
NXT

2
@NXT ฉันไม่รู้ด้วยซ้ำว่า mysql สามารถฟังพอร์ตต่าง ๆ บนอินเทอร์เฟซต่าง ๆ ได้ แต่เป็นสถานการณ์ที่ไม่น่าเป็นไปได้มาก จากนั้นอาจมีกฎไฟร์วอลล์ ฯลฯ มีหลายวิธีในการทำเช่นนั้น แต่ความเป็นไปได้ที่แตกต่าง ...
Michael Krelin - แฮกเกอร์

ไม่ได้หมายความอย่างนั้นเสมอ my.cnfไฟล์ของฉันไม่มีเส้นbind-addressหรือใด ๆskip-networkingแต่ฉันก็ได้รับข้อผิดพลาดเดียวกัน ไม่มีการติดตั้งไฟร์วอลล์อย่างใดอย่างหนึ่ง วิ่งออกไปจากความคิด
CoderGuy123

ดี 111 หมายถึงการเชื่อมต่อถูกปฏิเสธเสมอ :) และ localhost-only อยู่ในกรณีนี้โดยเฉพาะเนื่องจากหลักฐานอื่น ๆ หากคุณให้รายละเอียดเพิ่มเติมเกี่ยวกับกรณีของคุณฉันอาจช่วยได้หรือไม่ นอกจากนี้ขึ้นอยู่กับระบบของคุณทุกวันนี้คุณมีแนวโน้มว่าจะมีการกำหนดค่ากระจัดกระจายในหลายไฟล์
Michael Krelin - แฮ็กเกอร์

10

หากคำตอบก่อนหน้านี้ทั้งหมดไม่ได้ให้ทางออกใด ๆ คุณควรตรวจสอบสิทธิ์ผู้ใช้ของคุณ

หากคุณสามารถเข้าสู่ระบบrootเพื่อ mysql คุณควรเพิ่มสิ่งนี้:

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY  '***';
GRANT ALL PRIVILEGES ON * . * TO  'root'@'192.168.1.100' IDENTIFIED BY  '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

mysql -ubeer -pbeer -h192.168.1.100แล้วพยายามที่จะเชื่อมต่ออีกครั้งโดยใช้ มันควรจะทำงาน


17
ฉันไม่คิดว่าข้อผิดพลาดเกี่ยวกับสิทธิ์ของผู้ใช้จะทำให้เกิดข้อผิดพลาด 111
ufk

1
ใช้งานได้จริงและฉันก็ได้รับ 111 ข้อผิดพลาดด้วย
Borjante

ดูเหมือนว่านี่เป็นทางออกที่ดีกว่าการเปิด mysql ไปยังเครือข่ายทั้งหมดโดยแสดงความคิดเห็นที่บรรทัด 127.0.0.1 มันควรจะเป็นทางออกที่ดีที่สุด
nyxee

7

หากคุณใช้ cPanel / WHM ตรวจสอบให้แน่ใจว่า IP อยู่ในรายการที่ปลอดภัยในไฟร์วอลล์ คุณจะต้องเพิ่ม IP นั้นไปยังรายการ SQL IP ระยะไกลในบัญชี cPanel ที่คุณพยายามเชื่อมต่อ


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

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