Máy chủ MySQL không thể truy cập từ máy từ xa


14

Tôi đã cài đặt máy chủ MySQL trong máy chủ Ubuntu cục bộ của mình (11.10). Tôi không thể kết nối với máy chủ từ một máy từ xa.

Khi tôi thử: - nmap localhost , Nó hiển thị như sau

DỊCH VỤ NHÀ NƯỚC
22 / tcp mở ssh
80 / tcp mở http
139 / tcp mở netbios-ssn
Mở microsoft-ds / tcp
631 / tcp mở ipp
3306 / tcp mở mysql

Nó có nghĩa là 3306, cổng MySQL là mở, phải không? Nhưng khi tôi thử nmap 192.168.0.50, đó là IP máy chủ, tôi nhận được như sau: -

DỊCH VỤ NHÀ NƯỚC
22 / tcp mở ssh
80 / tcp mở http
139 / tcp mở netbios-ssn
Mở microsoft-ds / tcp

Điều này có nghĩa là cổng không mở khi truy cập bằng IP? Nếu vậy, làm thế nào để tôi mở cổng?

Tôi đã thử mã sau đây, nhưng có vẻ như nó không hoạt động.

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Có chuyện gì ở đây vậy?

Câu trả lời:


22

Dịch vụ MySQL của bạn bị ràng buộc chỉ phục vụ localhost (ràng buộc giao diện). Đây là mặc định vì lý do bảo mật. Nếu bạn thực sự cần truy cập trực tiếp từ các máy chủ khác, có một cách hay để kích hoạt quyền truy cập từ xa vào MySQL trên Ubuntu mà bạn có thể làm theo:

  1. với quyền root, hãy mở /etc/mysql/my.cnfhoặc /etc/mysql/mysql.conf.d/mysqld.cnf với trình soạn thảo yêu thích của bạn, như trên các hệ thống khác nhau, nó được tìm thấy là khác nhau.
  2. tìm [mysqld]phần, và trong đó cho bind-addresstừ khóa. Điều này thường được đặt thành 127.0.0.1- thay đổi để phù hợp với địa chỉ IP "bình thường" của bạn
  3. lưu tệp và tải lại dịch vụ (ví dụ: sử dụng service mysql restart)

Hãy nhớ rằng bạn phải cho phép người dùng từ xa truy cập (các) cơ sở dữ liệu của họ từ xa, bằng cách đặt GRANT phù hợp - ví dụ:

GRANT ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD';

Lưu ý @'%', có nghĩa là "từ bất kỳ máy chủ lưu trữ".


Vui mừng khi đọc - và bạn được chào đón!
Izzy

liên kết bị hỏng :(
dino

2
@dino Không còn nữa. Tôi đã sửa nó và cũng bao gồm một đoạn trích, vì vậy nếu nó chết một lần nữa, các bước cần thiết vẫn còn ở đây. Thật tệ là tôi đã không làm như vậy ngay từ đầu - nhưng như bạn có thể thấy từ dấu thời gian, đó là một trong những câu trả lời ban đầu của tôi. Tất cả chúng ta đều học :)
Izzy

2
Trường địa chỉ liên kết nằm dưới /etc/mysql/mysql.conf.d/mysqld.cnfhệ thống của tôi.
Eric G

@EricG Cảm ơn con trỏ. Câu trả lời của tôi là 5 năm trước, vì vậy cấu hình đã thay đổi một chút (và có thể được thực hiện nhiều mô-đun hơn).
Izzy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.