Không thể kết nối với lỗi máy chủ MySQL 111 [đã đóng]


152

Tôi đã cài đặt máy chủ mysql trên hộp linux IP = 192.168.1.100 nhưng khi tôi cố gắng kết nối với IP này thì nó vẫn bị lỗi (111). nhưng sử dụng localhost và 127.0.0.1 là OK.

bia @ bia-laptop # ifconfig | grep "inet addr"
          inet addr: 127.0.0.1 Mặt nạ: 255.0.0.0
          inet addr: 192.168.1.100 Bcast: 192.168.1.255 Mặt nạ: 255.255.255.0

bia @ bia-máy tính xách tay # mysql -ubeer -pbeer -h192.168.1.100
ERROR 2003 (HY000): Không thể kết nối với máy chủ MySQL trên '192.168.1.100' (111)

bia @ bia-laptop # mysql -ubeer -pbeer -hlocalhost
Chào mừng bạn đến với màn hình MySQL. Các lệnh kết thúc bằng; hoặc \ g.
Id kết nối MySQL của bạn là 160
Phiên bản máy chủ: 5.1.31-1ubfox2 (Ubuntu)

Nhập 'trợ giúp;' hoặc '\ h' để được giúp đỡ. Nhập '\ c' để xóa bộ đệm.

mys> 

bia @ bia-laptop # mysql -ubeer -pbeer -h127.0.0.1
Chào mừng bạn đến với màn hình MySQL. Các lệnh kết thúc bằng; hoặc \ g.
Id kết nối MySQL của bạn là 161
Phiên bản máy chủ: 5.1.31-1ubfox2 (Ubuntu)

Nhập 'trợ giúp;' hoặc '\ h' để được giúp đỡ. Nhập '\ c' để xóa bộ đệm.

mys> 

Kết nối từ máy khác nó cũng bị lỗi 111.

other @ other-laptop # mysql -ubeer -pbeer -h192.168.1.100
ERROR 2003 (HY000): Không thể kết nối với máy chủ MySQL trên '192.168.1.100' (111)

Sự khác biệt giữa việc sử dụng localhost / 127.0.0.1 và 192.168.1.100 trong trường hợp này. Tôi không biết cách kết nối với cơ sở dữ liệu này từ một máy khác.

Xin hãy giúp đỡ. Cảm tạ.

Câu trả lời:


263

Điều đó có nghĩa là máy chủ MySQL của bạn chỉ nghe giao diện localhost.

Nếu bạn có những dòng như thế này:

bind-address = 127.0.0.1

Trong my.cnftệp cấu hình của bạn , bạn nên nhận xét chúng (thêm dấu # ở đầu dòng) và khởi động lại MySQL.

sudo service mysql restart

Tất nhiên, để làm điều này, bạn phải là quản trị viên của máy chủ.


6
rõ ràng, anh ta không có skip-networkingđường dây ;-)
Michael Krelin - hacker

11
Làm thế nào để biết vị trí của mysql my.cnf: stackoverflow.com/questions/2482234/
Kẻ

2
Nhưng điều gì xảy ra khi bạn CÓ THỂ kết nối với nó từ bàn làm việc mysql? Tôi có cùng một vấn đề.
George Pamfilis

3
Tôi đã làm theo những gì được đưa ra trong câu trả lời nhưng vẫn không thể làm cho nó hoạt động. Sau đó tôi đã tìm ra rằng tham số "địa chỉ liên kết" nằm trong tệp "/etc/mysql/mysql.conf.d/mysqld.cnf". Nhận xét nó ra khỏi đó và nó làm việc!
Yahya

3
các phiên bản mới hơn của ubfox> = 16.04 có thể có dòng này trong /etc/mysql/mysql.conf.d/myqld.cnf
dellasavia

38

111 có nghĩa là kết nối bị từ chối , điều này có nghĩa là mysqld của bạn chỉ lắng nghe localhostgiao diện.

Để thay đổi nó, bạn có thể muốn xem bind-addressgiá trị trong mysqldphần của my.cnftệp.


Cũng đáng kiểm tra nếu số cổng hợp lệ. Không khớp :3306:3307có thể dẫn đến lỗi 111.
NXT

2
@NXT, tôi thậm chí không biết liệu mysql có thể nghe trên các cổng khác nhau trên các giao diện khác nhau hay không, nhưng đó là tình huống rất khó xảy ra (với các triệu chứng trong bài viết gốc) ngay cả khi có thể. Sau đó, có thể có các quy tắc tường lửa, v.v ... Có nhiều cách để đạt được điều đó, nhưng khả năng khác nhau là khác nhau
Michael Krelin - hacker

Không phải lúc nào cũng có nghĩa như vậy. Các my.cnftập tin của tôi không có bất kỳ bind-addresshoặc skip-networkingdòng nào, và tôi vẫn nhận được cùng một lỗi. Không có tường lửa được cài đặt. Chạy ra khỏi ý tưởng.
Deleet

Chà, 111 luôn có nghĩa là kết nối bị từ chối :) Và chỉ localhost là trong trường hợp cụ thể này do bằng chứng khác. Nếu bạn cung cấp thêm chi tiết về trường hợp của bạn, tôi có thể giúp gì không? Ngoài ra, tùy thuộc vào hệ thống của bạn hiện nay, bạn có thể có cấu hình nằm rải rác trên nhiều tệp.
Michael Krelin - hacker

10

Nếu tất cả các câu trả lời trước không đưa ra bất kỳ giải pháp nào, bạn nên kiểm tra đặc quyền người dùng của mình.

Nếu bạn có thể đăng nhập như rootvào mysql thì bạn nên thêm cái này:

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY  '***';
GRANT ALL PRIVILEGES ON * . * TO  'root'@'192.168.1.100' IDENTIFIED BY  '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

Sau đó thử kết nối lại bằng cách sử dụng mysql -ubeer -pbeer -h192.168.1.100. Nó nên hoạt động.


17
Tôi không nghĩ rằng lỗi liên quan đến đặc quyền người dùng sẽ gây ra lỗi 111.
ufk

1
Nó thực sự hoạt động và tôi cũng nhận được 111 lỗi.
Borjante

Có vẻ như đây là một giải pháp tốt hơn so với việc mở mysql cho toàn bộ (các) mạng bằng cách nhận xét dòng 127.0.0.1. nó nên là giải pháp tốt nhất
nyxee

7

Nếu bạn đang chạy cPanel / WHM, hãy đảm bảo rằng IP được đưa vào danh sách trắng trong tường lửa. Bạn sẽ cần thêm IP đó vào danh sách IP SQL từ xa trong tài khoản cPanel mà bạn đang cố gắng kết nối.


1
Một "thông báo" tốt để xem liệu đó có phải là tường lửa gây ra lỗi hay không là sẽ mất khá nhiều thời gian để lỗi được trả về. Nếu MySQL gây ra sự cố, phản hồi sẽ nhanh chóng xuất hiện.
Grim ...

Bạn có thể giải thích làm thế nào được thực hiện?
Người dùng
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.