วิธีการตั้งค่าเซิร์ฟเวอร์ MySql เพื่อยอมรับการเชื่อมต่อระยะไกล


16

ฉันกำลังติดตั้งเซิร์ฟเวอร์ MySql ในเดสก์ท็อป Ubuntu ฉันสามารถเชื่อมต่อ MySql Query Browser ได้เมื่อระบุServer Hostnameas localhostแต่เมื่อฉันแทนที่ด้วย IP ของเครื่องมันจะหยุดทำงาน (แม้ว่า MySql Query Browser จะทำงานในเครื่องเดียวกัน)

ทั้งหมดที่ฉันทำไปแล้วคือการลบ iptables แต่ดูเหมือนว่ามันจะไม่เกี่ยวข้องกับมัน

นี่คือข้อความแสดงข้อผิดพลาด

ไม่สามารถเชื่อมต่อกับโฮสต์ '192.168.0.2'

ข้อผิดพลาด MySQL Nr 2003

ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ที่ '192.168.0.2' (111)

คลิกปุ่ม 'Ping' เพื่อดูว่ามีปัญหาเครือข่ายหรือไม่

ปิงก็โอเค

คำตอบ:


22

คุณจะต้องผูก mysqld ของคุณกับ IP ที่แตกต่างจาก 127.0.0.1

เปิด my.cnf ของคุณ (/etc/mysql/my.cnf ตามปกติ) และเปลี่ยนบรรทัดที่ระบุว่า

bind = 127.0.0.1

เชื่อมต่อกับ IP ที่เครื่องของคุณใช้เชื่อมต่อกับโลกภายนอก 0.0.0.0ผูกกับที่อยู่ IP ทั้งหมด อย่าลืมรีสตาร์ท mysqld ของคุณหลังจากการเปลี่ยนแปลงนั้น


มีข้อผิดพลาดอื่นตอนนี้: ไม่สามารถเชื่อมต่อกับโฮสต์ '192.168.0.2' ข้อผิดพลาดของ MySQL 1130 Host 'Anything-vubuntu.local' ไม่ได้รับอนุญาตให้เชื่อมต่อกับเซิร์ฟเวอร์ MySQL นี้
Jader Dias

user @ localhost และ user @ <hostname> นั้นแตกต่างกัน คุณต้องเพิ่มผู้ใช้เพื่อให้สามารถเชื่อมต่อจากโฮสต์ระยะไกล
James

นี่ไม่ใช่ปัญหา ฉันได้ทำไปแล้วและยังคงได้รับข้อผิดพลาด
Cerin

ควรจะเป็นbind-addressอย่างไร
โทมัสเวลเลอร์


2

ปัญหาที่อาจเกิดขึ้นได้อธิบายไว้ที่นี่:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/en /access-denied.html

หากคุณต้องการให้สิทธิ์ทั้งหมดกับฐานข้อมูลทั้งหมดให้ลอง

grant all on *.* to 'joe'@'%';

อย่างไรก็ตามก่อนที่คุณจะทำเช่นนั้นตรวจสอบให้แน่ใจว่าคุณมีผู้ใช้ในฐานข้อมูล "mysql" ที่ตั้งค่า "โฮสต์" เป็นที่อยู่ IP ของคุณ - ในกรณีของฉันคือ IP ของฉันที่นี่ที่บ้าน ดังนั้นผู้ใช้ "joe" อาจมีมากกว่าหนึ่งระเบียนหนึ่งระเบียนสำหรับแต่ละ IP ที่เขาอาจจะโทรมา หากต้องการดูสิ่งที่คุณมีอยู่ในนั้น:

use mysql;
select Host, User, Password from user where user='joe';`

ในกรณีของฉันกลับกลายเป็นว่าผู้ใช้ของฉันมี IP ที่ถูกต้อง แต่รหัสผ่านก็หายไปเช่นกัน ฉันตัดรหัสผ่าน (มันถูกแฮชหรืออะไรบางอย่าง) และสิ่งนี้แก้ปัญหาการเชื่อมต่อระยะไกลของฉันโดยเฉพาะ:

update user set Password='5493845039485' where user='joe';

อีกอย่างหนึ่งใน my.cnf คุณอาจต้องการตั้งค่า "พอร์ต = 3306" หรือพอร์ตใด ๆ ที่คุณต้องการใช้

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