MySQL 5.7 bind-address ไม่ทำงาน


17

ฉันได้ติดตั้งการเชื่อมต่อระยะไกลสำหรับ MySQL 5.5 เรียบร้อยแล้ว

วันนี้ฉันติดตั้งเซิร์ฟเวอร์ใหม่ด้วย Ubuntu 16.04 และ MySQL 5.7 แต่ด้วยเหตุผลบางอย่างฉันไม่สามารถทำการติดตั้ง MySQL นี้ให้ฟังกับโฮสต์อื่น ๆ127.0.0.1ได้

นี่คือของฉัน/etc/mysql/conf.d/mysql.cnf:

[mysqld]
bind-address = 0.0.0.0

ฉันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL นี้จากโฮสต์ระยะไกลและเมื่อฉันตรวจสอบของnetstatฉันฉันรู้ว่า MySQL ฟังการเชื่อมต่อจากlocalhostเท่านั้น

lsof -Pni :3306 ผลลัพธ์คือ:

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  5302 mysql   25u  IPv4  37280      0t0  TCP 127.0.0.1:3306 (LISTEN)

อะไรคือปัญหา?


คุณตีกลับ mysql หรือไม่ เอาต์พุตของ netstat -lntp คืออะไร?
Linuxx

@ Linuxx ฉันได้รีสตาร์ทเครื่องทั้งหมด tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 13050/mysqld
รีบ

ฉันถือว่าคุณเพิ่มบรรทัดนั้นในไฟล์นั้น ลบบรรทัดนั้นและแก้ไขไฟล์ /etc/mysql/mysql.conf.d/mysqld.cnf และเปลี่ยนพารามิเตอร์ที่นั่น
Linuxx

1
@Linuxx มันใช้งานได้เหมือนเวทมนตร์ :) ฉันไม่ได้สังเกตว่ายังมีอีกไดเรกทอรี * .conf.d ดังนั้นโดยทั่วไปแล้ว 5.7 เก็บ [mysql] config ไว้ในไดเรกทอรี conf.d ในขณะที่ [mysqld] configs จะถูกเก็บไว้ใน mysql.conf.d ขอขอบคุณ! กรุณาตอบด้วยฉันจะยอมรับ
รีบ

1
ฉันเปลี่ยน bind-address ทั้งใน /etc/mysql/mysql.conf.d/mysqld.cnf และ /etc/mysql/conf.d/mysql.cnf รีสตาร์ทเซิร์ฟเวอร์ แต่ฉันยังเห็น "tcp 0 0 127.0 0.1: 3306 "เมื่อฉันเรียกใช้ <netstat -tulpen
Chepech

คำตอบ:


39

พวกเขาเปลี่ยนแพ็คเกจ MySQL เพื่อให้พารามิเตอร์การผูกอยู่ใน /etc/mysql/mysql.conf.d/mysqld.cnf ทันที โปรดเปลี่ยนพารามิเตอร์ผูกที่นั่นและลบสิ่งที่คุณวางไว้ใน /etc/mysql/conf.d/mysql.cnf


แม้ว่ามันไร้สาระ วัตถุประสงค์ของ "conf.d" คือเพื่อไม่แก้ไขค่าเริ่มต้นที่จัดทำโดยแพคเกจและแทนที่ด้วยการกำหนดค่าของคุณเอง แต่เป็นตอนนี้ "mysql.conf.d" กำลังเอาชนะเราไม่มีวิธีที่เชื่อถือได้เพื่อให้แน่ใจว่าเรามาในที่สุดเว้นแต่เราจะแก้ไข "mysql.conf.d / mysqld.cnf"
เคนน์

@kenn: เพิ่มการตั้งค่าของคุณภายใต้ mysql.conf.d / แทนและตั้งชื่อมันว่า "x-something"
Bell

3
แน่นอน แต่สิ่งที่เป็นจุด "conf.d" แล้ว? ไม่ใช่ "mysql.conf.d" ค่าเริ่มต้นที่ระบุในแพ็คเกจซึ่งควรจะถูกเขียนทับโดย "conf.d" ฉันคิดว่าควรโหลดคำสั่ง "conf.d" และ "mysql.conf.d" ใน "/etc/mysql/my.cnf" ที่ระดับแพ็คเกจ MySQL
kenn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.