Làm cách nào để biết mysql có đang chạy trên localhost không?

Một phần lớn nội dung trên Internet được lưu trữ trên cơ sở dữ liệu mà MySQL là lựa chọn phổ biến. Nhưng phải làm gì khi đột nhiên nội dung động của bạn không tải hoặc khi quay lại trang web của bạn, bạn được chào đón bởi một trang trắng gần như trống rỗng với thông báo “Lỗi thiết lập kết nối cơ sở dữ liệu. ” Hướng dẫn này nhằm mục đích trợ giúp khắc phục sự cố cơ sở dữ liệu MySQL trên máy chủ đám mây và bằng cách làm theo các bước được liệt kê ở đây, hy vọng bạn sẽ có thể khôi phục chức năng cơ sở dữ liệu của mình

Dùng thử UpCloud miễn phí. Triển khai một máy chủ chỉ trong 45 giây

Kiểm tra xem dịch vụ có đang chạy không

Nếu trang web của bạn không thể kết nối với cơ sở dữ liệu của bạn, có thể đơn giản là dịch vụ không nghe. Kiểm tra trạng thái MySQL của bạn, trên các hệ thống Ubuntu và Debian, điều này có thể được thực hiện bằng lệnh sau

sudo service mysql status

CentOS và các biến thể Red Hat khác cũng sử dụng MySQL, nhưng thay vào đó, nó được đặt tên là MariaDB, vì vậy hãy sử dụng lệnh này để thay thế

sudo service mariadb status

Đầu ra từ kiểm tra trạng thái trên CentOS và Debian sẽ hiển thị nội dung nào đó dọc theo các dòng của ví dụ này từ CentOS bên dưới, đầu ra của Debian sẽ gần như giống hệt ngoại trừ tên dịch vụ khác nhau

mariadb.service - MariaDB database server
    Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled)
    Active: active (running) since Wed 2015-08-05 11:53:38 EEST; 3h 23min ago
  Main PID: 2451 (mysqld_safe)
    CGroup: /system.slice/mariadb.service
            ├─2451 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
            └─2609 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql...

Bản in khá dài dòng, nhưng phần quan trọng thường được tô màu để nổi bật hơn. Màu xanh lá cây 'đang hoạt động (đang chạy)' có nghĩa là dịch vụ sẽ chạy bình thường nếu thay vào đó, thông báo 'đang hoạt động (đã thoát)' hoặc 'không hoạt động (đã chết)' thì quá trình đã bị dừng hoặc bị hủy

Ubuntu cô đọng cùng một thông tin thành một lớp lót giống như một ví dụ đầu ra bên dưới

mysql start/running, process 5897

Nếu trạng thái dịch vụ của bạn không phải là 'đang chạy', hãy thử khởi động lại quy trình bằng lệnh dịch vụ giống như trước đây nhưng với 'khởi động lại' thay vì 'trạng thái'

sudo service mysql restart

sudo service mariadb restart

Nếu dịch vụ cơ sở dữ liệu khởi động lại mà không gặp lỗi, bạn có thể thử kết nối với nó bằng lệnh bên dưới. Nhập mật khẩu gốc khi được nhắc

mysql -u root -p

Nếu bạn được chào đón với “Welcome to the MySQL/MariaDB monitor” thì kết nối đã thành công và dịch vụ cơ sở dữ liệu đang chạy. Nếu thay vào đó, bạn gặp lỗi như ví dụ dưới đây, có thể bạn đã nhập sai mật khẩu cho người dùng root. Hãy thử lại hoặc nếu bạn không chắc chắn về mật khẩu gốc, hãy đăng nhập bằng tài khoản người dùng khác mà bạn có quyền truy cập bằng cách thay thế gốc bằng tên người dùng khác

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Nếu cơ sở dữ liệu của bạn được thiết lập trên một máy chủ riêng biệt với máy chủ lưu trữ web của mình, hãy đảm bảo hai máy chủ có thể kết nối với nhau. Bạn có thể kiểm tra kết nối cơ sở dữ liệu từ máy chủ web của mình bằng lệnh bên dưới bằng tên người dùng chính xác cho quá trình cài đặt của bạn

mysql -u  -p -h 

Kiểm tra cấu hình

Khi MySQL đang chạy nhưng trang web của bạn vẫn không tải như bình thường hoặc nếu khi cố gắng kết nối với cơ sở dữ liệu của bạn theo cách thủ công, bạn nhận được thông báo lỗi như bên dưới, bạn nên xem cấu hình dịch vụ

________số 8

Trên máy chủ Debian và Ubuntu, tệp cấu hình cho MySQL thường được lưu tại /etc/mysql/. Cũng có thể có các cài đặt dành riêng cho người dùng được lưu trữ tại /home//. của tôi. cnf, sẽ ghi đè cấu hình chung. Kiểm tra xem có bất kỳ ghi đè cấp độ người dùng nào đã được đặt không. Người dùng thường được khuyên nên có tên người dùng riêng cho các ứng dụng web khác nhau, vì vậy hãy kiểm tra ít nhất những tên người dùng có liên quan đến sự cố tải trang của bạn. Bạn có thể mở tệp cấu hình chung bằng lệnh đầu tiên trong số hai lệnh sau bên dưới và lệnh dành riêng cho người dùng bằng lệnh sau bằng cách thay thế bằng tên người dùng cơ sở dữ liệu

sudo nano /etc/mysql/my.cnf

sudo nano /home//.my.cnf

Bằng cách cuộn xuống cài đặt [client] và [mysqld_safe], bạn sẽ tìm thấy một cái gì đó giống như ví dụ ở đây

sudo service mariadb status
0

Với CentOS và các Red Hat khác, tệp cấu hình chính được lưu trữ ở vị trí hơi khác, hãy mở nó để kiểm tra bằng

sudo service mariadb status
1
sudo service mariadb status
2

Các dòng ở đây cần chú ý là 'socket', 'datadir' và 'bind-address'. Các tham số trong ví dụ trên có giá trị mặc định và trong hầu hết các trường hợp, cấu hình của bạn sẽ giống nhau. Đảm bảo các cài đặt trỏ đến đúng thư mục để MySQL thực sự có thể tìm thấy các tệp cần thiết. Cách dễ nhất để kiểm tra 'datadir' là sử dụng lệnh này bên dưới

sudo service mariadb status
3

Đầu ra sẽ liệt kê tất cả các tệp trong thư mục đó, nó phải chứa ít nhất những thứ sau cộng với bất kỳ cơ sở dữ liệu nào bạn đã tạo

sudo service mariadb status
4

Nếu thư mục dữ liệu hoặc ổ cắm đã được di chuyển và MySQL không biết chúng ở đâu, hãy sửa tệp cấu hình để trỏ đến đúng thư mục. Bạn có thể tìm kiếm các thư mục bằng lệnh sau

sudo service mariadb status
5

Tham số thứ ba bạn cần kiểm tra là địa chỉ liên kết, điều này chỉ thực sự phù hợp nếu cơ sở dữ liệu của bạn cần được truy cập từ xa. Trong cài đặt Debian và Ubuntu, liên kết theo mặc định được đặt thành địa chỉ loopback, ngăn các cuộc gọi cơ sở dữ liệu từ bên ngoài máy chủ cục bộ. CentOS không có cùng tham số trừ khi được đặt thủ công. Đối với bất kỳ thiết lập nào mà dịch vụ web của bạn nằm trên một máy chủ khác với cơ sở dữ liệu, địa chỉ liên kết này phải được đặt thành IP riêng của máy chủ

Kiểm tra các bản ghi lỗi

Nếu cấu hình có vẻ chính xác và dịch vụ đang chạy, nhưng trang web của bạn vẫn không tải như bình thường, hãy thử kiểm tra nhật ký để biết bất kỳ gợi ý nào về nguyên nhân có thể là gì

Các máy chủ Debian và Ubuntu lưu các bản ghi lỗi vào /var/log/mysql/error. đăng nhập. Bạn có thể đọc qua nhật ký với 'less', nhưng điều này có thể không thuận tiện lắm vì nhật ký không chỉ bao gồm các lỗi nghiêm trọng. Thay vào đó, hãy tìm kiếm nhật ký bằng cách sử dụng 'grep'

sudo service mariadb status
6

Nếu bạn không thể tìm thấy bất cứ điều gì trong các bản ghi gần đây nhất, hãy kiểm tra cả những bản đã lưu trữ. Để thực hiện việc này, hãy sử dụng 'zgrep' với lệnh tương tự như 'grep' thông thường

sudo service mariadb status
7

Vì cơ sở dữ liệu trong CentOS được đặt tên là MariaDB thay vì MySQL, nhật ký cũng được lưu dưới một tên khác. Bạn có thể tìm kiếm nhật ký bằng lệnh sau

sudo service mariadb status
8

Các hệ thống Debian cũng báo cáo các sự kiện MySQL tới /var/log/syslog, để lọc ra mọi thứ khác, hãy sử dụng ‘grep’ với hai từ khóa được phân tách bằng. * để thể hiện 'và' như trong lệnh bên dưới

sudo service mariadb status
9

Nếu bạn gặp khó khăn trong việc tìm kiếm bất cứ điều gì hữu ích, hãy thử các từ khóa khác nhau, chẳng hạn như 'bắt đầu' để xem thời điểm dịch vụ được khởi động lại lần cuối hoặc 'không thành công' để tìm bất kỳ sự cố nào ít nghiêm trọng hơn có thể không được báo cáo là lỗi

Yêu cầu giúp đỡ

Hiện tại, lạc quan nhất là cơ sở dữ liệu của bạn sẽ được thiết lập và chạy lại, nhưng trong trường hợp bạn gặp phải lỗi dai dẳng hơn, vui lòng yêu cầu trợ giúp. Liên hệ với nhóm hỗ trợ của chúng tôi và cố gắng giải thích vấn đề theo khả năng tốt nhất của bạn, đồng thời bao gồm các bước bạn đã thực hiện với kết quả của họ trong khi khắc phục sự cố. Điều này sẽ giúp nhóm giúp bạn giải quyết vấn đề