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:

MAMP-my.cnf locked

MAMP-my.cnf locked

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

MAMP-Edit-Template-MySQL-conf

MAMP-Edit-Template-MySQL-conf

Lúc này mọi thay đổi thông qua MAMP sẽ được ghi lại mà không bị reset

MAMP-Edit-my.cnf

MAMP-Edit-my.cnf

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 ?

About Author

Tuấn Anh

Là một người đam mê lập trình, hiện tập trung mảng phát triển ứng dụng web dựa trên nền tảng của WordPress. Đồng thời, nhằm đạt sự trọn vẹn trong công việc freelance, tôi đang học đồ hoạ, để có thể tự mình thiết kế layout, logo và những thứ khác liên quan đến đồ họa. Mục tiêu vài năm tới: Tôi sẽ là Full Web Developer = Graphics Design + Coding. Vietcoding Blog viết về WordPress, chia sẻ kinh nghiệm, mẹo vặt, viết plugin, làm theme và ôm ấp ý tưởng viết một Web Application Framework dựa trên WordPress. Đồ hoạ là chuyên mục đang được chuẩn bị trong tương lai.



10 thoughts on “MAMP – Cấu hình kết nối từ xa vào MySQL server

  1. Yêu Host says:

    Á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 🙂

    1. 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

  2. Joseph Trinh says:

    À 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 🙁

    1. 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

  3. xman says:

    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 🙂

    1. 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

  4. Tech Blog Team says:

    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.

    1. 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.

  5. quannguyen says:

    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:)

    1. XAMPP Việt Coding không dùng lâu rồi nên không có trên máy để test nữa 😀


Got Something To Say:

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

GENESIS FRAMEWORK