MAMP – Cấu hình kết nối từ xa vào MySQL server
Chào các bạn,
Tuần trước, Việt Coding triển khai một server chạy dịch vụ web phục vụ cho khoảng 100 người dùng trong nội bộ. Ban đầu dự định cài đặt CentOS làm server nhưng rồi Việt Coding quyết định sử dụng một máy có sẵn chạy Mac OS (dù sao thì Mac OS vẫn đẹp hơn so với CentOS nhỉ)
Do máy Mac OS này trước đó đã cài sẵn dịch vụ web Apache và MySQL trong bộ MAMP nên cài đặt ứng dụng web vào rất nhanh. Mọi thứ đều ổn, ứng dụng web (nền WordPress, theme sử dụng Genesis và child theme Extended Magazine) chạy nhanh và ổn định.
Cách đây vài ngày, khi Việt Coding sử dụng một chương trình MySQL Client để kết nối vào server thì gặp một sự cố nhỏ là không thể kết nối với thông báo lỗi:
2003 – Can’t connect to MySQL server on ‘192.168.1.10’ (10061)
Nghĩ là do cấu hình chưa đúng nên Việt Coding kiểm tra lại:
– Vào MAMP, tab Server \ MySQL và uncheck vào Allow local access only
– Cấu hình firewall cho phép dịch vụ mysqld được kết nối ra ngoài.
Thử kết nối lại xem sao. Kết quả vẫn gặp thông báo lỗi như cũ.
Việt Coding bèn thử tắt luôn firewall nhưng kết quả vẫn không thể nào kết nối được.
Đành dành thời gian với anh Google xem có khả quan hơn không. Thử một vài từ khoá xem nào. Một loạt kết quả được trả ra. Đọc lướt qua một vài trang và chọn một trang có vẻ “hay ho” 😀
Theo trang đó, Việt Coding lần mò tìm file cấu hình my.cnf trong /Applications/MAMP/tmp/mysql/
Trong my.cnf, tìm đến dòng
bind-address = 127.0.0.1
sửa thành
bind-address = 0.0.0.0
Save và start lại dịch vụ MySQL.
Ái chà chà, sao lỗi ấy vẫn tiếp tục ấy nhỉ. Có lẽ cách này không hiệu quả chăng ? Việt Coding mở lại my.cnf để kiểm tra và phát hiện ra một sự lạ: Dòng bind-address rõ ràng đã sửa thành 0.0.0.0 lại chuyển thành 127.0.0.1 như cũ. Như vậy mỗi lần start lại các dịch vụ thì thằng MAMP sẽ tự động trả lại cấu hình cũ mặc định. Để đảm bảo nhận định đó đúng Việt Coding thử lại vài lần nữa và cuối cùng chắc chắn rằng MAMP đã chỉnh sửa lại các tệp cấu hình như cũ.
Như vậy để chống lại việc MAMP tự khôi phục cấu hình mặc định Việt Coding thử một cách là gán lại quyền hạn trên tệp my.cnf là Read Only cho mọi nhóm và người dùng. Với cách này MAMP vẫn có thể chỉnh sửa lại. Cuối cùng, Việt Coding mới thử Locked luôn my.cnf thì MAMP lại báo lỗi:
Lại lần mò lên Google và tìm được một hướng dẫn khác. Đọc xong Việt Coding mới đoán ra, MAMP chống lại mọi sự thay đổi từ những phần mềm bên ngoài trừ những thay đổi từ nó. Hiểu ra vấn đề, Việt Coding quay lại MAMP, vào menu File \ Edit Template và chọn MySQL my.cnf
Lúc này mọi thay đổi thông qua MAMP sẽ được ghi lại mà không bị reset
Sau rốt, khi đã chỉnh sửa được my.cnf, Việt Coding đã có thể connect vào được MySQL từ xa rồi. Tuy vậy, Việt Coding cũng nhận thấy thằng MAMP thật là khó tính đúng không nào ?
10 Comments
Yêu Host · 13/03/2012 at 17:19
Ái chà, chả toát mồ hôi quá còn gì :-ss Em cũng lăn lộn với cấu hình Apache mất mấy vụ lúa 🙂
Việt Coding · 12/04/2012 at 09:25
Hồi mới làm quen với Apache Việt Coding cũng phải mất khá nhiều thời gian để cấu hình đấy
Joseph Trinh · 15/03/2012 at 10:35
À mà bác Việt check lại xem, em thấy site của bác load chậm quá, chờ lâu quá em thấy nản nản.
Không biết có phải mạng nhà mình cùi bắp không 🙁
Việt Coding · 12/04/2012 at 09:25
Việt Coding cũng biết vấn đề này. Thỉnh thoảng load vào rất chậm. Có thể do Việt Coding đã chỉnh sửa quá nhiều nhưng lại không tối ưu hoá. Việt Coding hiện khá bận nên không dám hứa trước khi nào sẽ khắc phục được
xman · 07/04/2012 at 14:09
cám ơn anh, đợt tới này em cũng triển khai một con home server chạy service lưu trữ dữ liệu và một hosting bên ngoài kết nối từ xa vào mysql trên con server này để lấy dữ liệu xuất ra trên nền web 🙂
Việt Coding · 12/04/2012 at 09:25
Kết nối vậy nếu đường truyền yếu sẽ làm chậm web app rất nhiều. Lại có vấn đề về bảo mật nữa chứ :p
Tech Blog Team · 14/06/2012 at 13:20
Cấu hình remote access cho MySQL rất nguy hiểm. Hiện tại MySQL đang có Lỗi bảo mật Bypass trong MySQL : http://techblog.vn/hacker-virus-security/cve-2012-2122-loi-bao-mat-bypass-trong-mysql-627/
Cách tốt nhất là tạo thêm một firewall nữa chì allow access cho IP cố định nào đó được phép remote mà thôi.
Việt Coding · 19/06/2012 at 14:45
Trên Internet thì đương nhiên không mở rồi. Trường hơp của mình là chạy trong LAN.
quannguyen · 30/05/2014 at 00:52
em cũng đang muốn làm giống bác nhưng chạy bằng xampp.nghĩa là dung máy em làm máy chủ,cấu hình xampp để các máy khác truy cập vào dùng đc database.không biết bác có cách nào không:)
Việt Coding · 02/06/2014 at 15:36
XAMPP Việt Coding không dùng lâu rồi nên không có trên máy để test nữa 😀