Tôi đã gặp lỗi này ngày hôm qua khi cố gắng kết nối với cơ sở dữ liệu mysql của mình sau khi chạy nó với NodeJS. Có rất nhiều thông tin mâu thuẫn trên web do cách bạn tải xuống mysql, phiên bản, hệ điều hành bạn đang sử dụng, v.v.
Để khắc phục nhanh trên hệ thống unix, tôi khuyên bạn nên làm như sau. Các bước bên dưới phù hợp với tôi và có thể cũng phù hợp với bạn. Tuy nhiên, bạn sẽ cần cài đặt HomeBrew nếu chưa có
Hướng dẫn này nhằm giải thích các bước cần thiết để giải quyết lỗi “ERROR 2003 [HY000]. Không thể kết nối với máy chủ MySQL trên '127. 0. 0. 1’ [111]” có thể xảy ra khi bạn cố gắng truy cập máy chủ cơ sở dữ liệu MySQL
Trước khi tiếp tục, nếu bạn là người dùng Linux chưa quen với MySQL/MariaDB, thì bạn có thể cân nhắc học MySQL/MariaDB cho người mới bắt đầu – Phần 1 và 20 Lệnh MySQL [Mysqladmin] để quản trị cơ sở dữ liệu trong Linux.
Mặt khác, nếu bạn đã là người dùng MySQL trung cấp/có kinh nghiệm, thì bạn có thể nắm vững những 15 Mẹo Điều chỉnh và Tối ưu hóa Hiệu suất MySQL/MariaDB Hữu ích
Ghi chú. Đối với hướng dẫn này, giả định rằng bạn đã cài đặt máy chủ cơ sở dữ liệu mysql
Quay trở lại vấn đề chính, một số nguyên nhân có thể gây ra lỗi này là gì?
- Lỗi mạng đặc biệt nếu máy chủ cơ sở dữ liệu mysql đang chạy trên máy chủ từ xa
- Không có máy chủ mysql nào đang chạy trên máy chủ được đề cập
- Tường lửa chặn kết nối TCP-IP hoặc các lý do liên quan khác
Dưới đây là các bước cần thiết để đối phó với nó
1. Nếu máy chủ cơ sở dữ liệu nằm trên một máy từ xa, thì hãy thử kiểm tra kết nối máy khách-máy chủ bằng cách sử dụng lệnh
$ ps -Af | grep mysqld0 chẳng hạn
$ ping server_ip_address
Sau khi có kết nối, hãy sử dụng lệnh
$ ps -Af | grep mysqld0 bên dưới để hiển thị thông tin về lựa chọn các quy trình đang hoạt động, cùng với lệnh
$ ps -Af | grep mysqld1 và lệnh grep, để kiểm tra xem trình nền mysql có đang chạy trên hệ thống của bạn không
$ ps -Af | grep mysqld
tùy chọn ở đâu
$ ps -Af | grep mysqld
2 – kích hoạt lựa chọn tất cả các quy trình$ ps -Af | grep mysqld
3 – cho phép liệt kê định dạng đầy đủ
Nếu không có đầu ra từ lệnh trước, hãy khởi động dịch vụ mysql như sau
$ sudo systemctl start mysql.service $ sudo systemctl start mariadb.service OR # sudo /etc/init.d/mysqld start
Sau khi bắt đầu dịch vụ mysql, hãy thử truy cập máy chủ cơ sở dữ liệu
$ mysql -u username -p -h host_address
2. Nếu bạn vẫn gặp lỗi tương tự, hãy xác định cổng [mặc định là 3306] mà trình nền mysql đang lắng nghe bằng cách chạy lệnh netstat
________số 8tùy chọn ở đâu
$ ps -Af | grep mysqld
4 – hiển thị các cổng nghe$ ps -Af | grep mysqld
5 – cho phép hiển thị địa chỉ số$ ps -Af | grep mysqld
6 – hiển thị PID và tên của chương trình sở hữu ổ cắm
Do đó, hãy sử dụng tùy chọn
$ ps -Af | grep mysqld7 để chỉ định cổng bạn nhìn thấy từ đầu ra ở trên khi truy cập máy chủ cơ sở dữ liệu
$ ps -Af | grep mysqld3
3. Nếu tất cả các lệnh trên chạy thành công nhưng bạn vẫn thấy lỗi, hãy mở tệp cấu hình mysql
$ ps -Af | grep mysqld4
Tìm dòng bên dưới và nhận xét nó bằng ký tự
$ ps -Af | grep mysqld8
$ ps -Af | grep mysqld6
Lưu tệp và thoát, sau đó khởi động lại dịch vụ mysql như vậy
$ sudo systemctl start mysql.service $ sudo systemctl start mariadb.service OR # sudo /etc/init.d/mysqld start
Tuy nhiên, nếu bạn có tường lửaD hoặc Iptables đang chạy, hãy thử xem lại các dịch vụ tường lửa và mở cổng mysql, giả sử đó là tường lửa chặn các kết nối TCP-IP đến máy chủ mysql của bạn
Đó là tất cả. Bạn có biết các phương pháp khác hoặc có đề xuất để giải quyết lỗi kết nối MySQL ở trên không?
Tôi đã tải xuống máy chủ MySQL và cài đặt nó trên máy Mac của mình, nhưng mỗi lần tôi cố gắng kết nối với nó, tôi lại gặp phải lỗi sau
Không thể kết nối với máy chủ MySQL trên '127. 0. 0. 1’ [61]
Có thể có nhiều lý do dẫn đến lỗi này, hầu hết trong số đó được đề cập rộng rãi trên mạng, nhưng trong trường hợp của tôi, đó là do MySQL đang chạy trên cổng 3307
Tôi nghĩ rằng cổng đã được cập nhật trong bản cập nhật máy chủ MySQL gần đây, vì tôi chưa bao giờ gặp sự cố này với phiên bản máy chủ MySQL trước đó
Dưới đây là cách kiểm tra xem bạn có gặp vấn đề tương tự hay không và cách thay đổi nó thành cổng 3306 [trừ khi bạn muốn tiếp tục chạy trên cổng 3307]
Đảm bảo máy chủ MySQL đang chạy
Xác nhận máy chủ MySQL đang lắng nghe trên cổng 3307
Chạy lệnh này trong Terminal
$ ps -Af | grep mysqld8
Đây là những gì nó có nghĩa là
- sudo — Chạy với quyền root, vì vậy chúng tôi có thể thấy mọi thứ đang chạy, không chỉ dưới tên người dùng hiện tại
- lsof - Hiển thị thông tin về các tệp mở cho quy trình Unix
- -i — Liệt kê tất cả internet và x. 25 tệp mạng [HP-UX]
- -P — Cấm chuyển đổi số cổng thành tên cổng
- grep mysqld — Chỉ hiển thị các dòng phù hợp với
$ ps -Af | grep mysqld
1
Như bạn có thể thấy, máy chủ MySQL đang chạy trên cổng 3307. Nếu đó là vấn đề của bạn, hãy đọc tiếp, nhưng nếu không, tôi không nghĩ bài đăng này sẽ giải quyết được vấn đề của bạn
Xác nhận cài đặt cổng trong danh sách thuộc tính [plist]
Hóa ra tập tin cấu hình này là thủ phạm
$ ps -Af | grep mysqld9
Bạn có thể xem cài đặt cổng trên dòng 18
$ ps -Af | grep mysqld0
Cập nhật số cổng từ 3307 thành 3306
Dừng máy chủ MySQL và tạo bản sao lưu của plist hiện tại
$ ps -Af | grep mysqld1
Chuyển đổi plist thành XML để bạn có thể dễ dàng chỉnh sửa nó
$ ps -Af | grep mysqld2
Chỉnh sửa tệp và thay thế cổng bằng 3306
$ ps -Af | grep mysqld3____24
Bạn có thể nhanh chóng chuyển đến cổng bằng cách gõ.
$ ps -Af | grep mysqld90 và nhấn ENTER. Chuyển sang chế độ chỉnh sửa với.
$ ps -Af | grep mysqld91. Lưu tệp với. ESC và
$ ps -Af | grep mysqld92
Chuyển đổi plist trở lại nhị phân
$ ps -Af | grep mysqld8
Khởi động máy chủ MySQL và xác nhận cổng 3306
Đây phải là tất cả những gì cần làm. Xác nhận rằng máy chủ MySQL đang chạy trên cổng 3306 bằng lệnh giống như chúng tôi đã sử dụng trước đó
$ ps -Af | grep mysqld9
Tôi đã mất một chút thời gian để tìm ra điều này, nhưng hy vọng bài đăng này sẽ giúp bạn tiết kiệm thời gian khắc phục sự cố