Thứ sáu, 21/04/2017 | 00:00 GMT+7

Cách gỡ lỗi WordPress "Lỗi thiết lập kết nối database"

WordPress là một trong những hệ thống quản lý nội dung open-souce phổ biến nhất trên thế giới. Mặc dù ban đầu nó tập trung vào viết blog, trong những năm qua nó đã phát triển thành một nền tảng linh hoạt hơn cho các trang web nói chung. Sau gần mười lăm năm phát triển, nó khá bóng bẩy và mạnh mẽ, tuy nhiên các vấn đề vẫn có thể xuất hiện.

Nếu gần đây bạn đã cố gắng tải trang web được hỗ trợ bởi WordPress của bạn và thay vào đó thấy thông báo cho biết “Lỗi khi cài đặt kết nối database ”, nguyên nhân thường là do một trong những điều sau:

  • Database đã bị lỗi, thường do server hết bộ nhớ
  • Thông tin đăng nhập database không chính xác trong cấu hình WordPress của bạn
  • Các bảng database WordPress đã bị hỏng

Ta hãy xem xét từng vấn đề một để xác định xem chúng có ảnh hưởng đến bạn hay không và cách khắc phục chúng.

Yêu cầu

Hướng dẫn này giả định những điều sau:

  • Bạn đang chạy WordPress trên một máy mà bạn có quyền truy cập vào dòng lệnh và sudo
  • Cơ sở dữ liệu đang chạy trên cùng một server với WordPress (điển hình của cài đặt WordPress tự lưu trữ, ít điển hình hơn của môi trường lưu trữ WordPress được chia sẻ)
  • Bạn biết tên user , password database của bạn và tên của database được tạo cho WordPress. Thông tin này nên được tạo trong quá trình cài đặt cài đặt WordPress ban đầu của bạn.

Bước 1 - Kiểm tra tài nguyên bộ nhớ server

Bước đầu tiên tốt để gỡ lỗi vấn đề này là thử đăng nhập vào server để xem hệ thống có khỏe mạnh và MySQL đang chạy hay không.

Đăng nhập vào server của bạn qua SSH, hãy nhớ thay thế các phần được đánh dấu bên dưới bằng chi tiết user và server của bạn :

  • ssh sammy@your_server_ip

Nếu bạn cần trợ giúp đăng nhập vào server của bạn , vui lòng xem bài viết Cách kết nối với Server bằng SSH của ta .

Lưu ý: Nếu bạn chắc chắn rằng mình đã chỉnh sửa chi tiết kết nối của bạn nhưng vẫn gặp sự cố khi đăng nhập, thì có thể server của bạn đã hết bộ nhớ hoặc tải quá nặng. Điều này có thể là do lưu lượng truy cập vào trang web đột ngột và sẽ giải thích cho lỗi WordPress. Bạn có thể cần phải khởi động lại server của bạn trước khi có thể đăng nhập.

Bây giờ ta đã đăng nhập thành công, hãy kiểm tra xem server MySQL của ta có đang chạy không:

  • sudo netstat -plt

Lệnh netstat in thông tin về hệ thống mạng của server của ta . Trong trường hợp này, ta muốn tên của các chương trình ( -p ) lắng nghe các kết nối ( -l ) trên một socket tcp ( -t ). Kiểm tra kết quả cho mysqld danh sách dòng, được đánh dấu bên dưới:

Output
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 localhost:mysql *:* LISTEN 1958/mysqld tcp 0 0 *:ssh *:* LISTEN 2205/sshd tcp 0 0 localhost:smtp *:* LISTEN 2361/master tcp6 0 0 [::]:http [::]:* LISTEN 16091/apache2 tcp6 0 0 [::]:ssh [::]:* LISTEN 2205/sshd tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN 2361/master

Nếu kết quả của bạn tương tự, ta biết MySQL đang chạy và lắng nghe các kết nối. Nếu bạn không thấy MySQL được liệt kê, hãy thử khởi động MySQL theo cách thủ công. Trên hầu hết các hệ thống trông giống như sau:

  • sudo systemctl start mysql

Một số bản phân phối Linux (đặc biệt là CentOS) sử dụng mysql d thay vì mysql đơn giản cho tên dịch vụ. Thay thế khi thích hợp.

MySQL sẽ bắt đầu. Để xác minh, hãy chạy lại netstat mà ta đã sử dụng ở trên và kiểm tra kết quả cho quy trình mysqld .

MySQL và WordPress đều cần một lượng bộ nhớ tốt để chạy đúng cách. Nếu MySQL đã thoát do tình trạng bộ nhớ thấp, ta sẽ thấy bằng chứng về điều đó trong log lỗi của nó. Hãy xem:

  • zgrep -a "allocate memory" /var/log/mysql/error.log*

zgrep sẽ tìm kiếm thông qua các file log , bao gồm các file log cũ hơn đã được lưu trữ dưới dạng file .tar.gz nén. Ta đang tìm kiếm các dòng có chứa allocate memory , trong các file error.log* nào trong folder /var/log/mysql/ .

Output
2017-04-11T17:38:22.604644Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool

Nếu bạn thấy một hoặc nhiều dòng như trên, server MySQL của bạn đã hết bộ nhớ và thoát. Nếu chỉ là một dòng, bạn có thể tạm thời gặp phải tình trạng giao thông bất thường. Nếu có nhiều dòng lỗi, server của bạn thường xuyên bị hạn chế bộ nhớ. Dù bằng cách nào, giải pháp là chuyển sang server có nhiều bộ nhớ khả dụng hơn. Trên hầu hết các nhà cung cấp dịch vụ cloud , việc nâng cấp một server hiện có là một vấn đề đơn giản với thời gian chết tối thiểu.

Nếu bạn không thấy kết quả nào sau khi chạy lệnh zgrep , server của bạn không hết bộ nhớ. Nếu trang web vẫn gặp lỗi, hãy tiếp tục đến bước tiếp theo, nơi ta sẽ xem xét cấu hình WordPress của bạn và đảm bảo chi tiết đăng nhập MySQL là chính xác.

Bước 2 - Kiểm tra thông tin đăng nhập database

Nếu bạn vừa chuyển cài đặt WordPress của bạn giữa các server hoặc nhà cung cấp dịch vụ lưu trữ, bạn có thể cần cập nhật chi tiết kết nối database của bạn . Chúng được lưu trữ trên server trong một file PHP có tên là wp-config.php .

Đầu tiên, hãy tìm file wp-config.php của ta :

  • sudo find / -name "wp-config.php"

Thao tác này tìm kiếm mọi thứ từ folder root ( / ) trở xuống và tìm thấy các file nào có tên wp-config.php . Nếu file như vậy tồn tại, đường dẫn đầy đủ sẽ được xuất:

Output
/var/www/html/wp-config.php

Bây giờ sử dụng editor yêu thích của bạn để mở file cấu hình. Ta sẽ sử dụng editor nano ở đây:

  • sudo nano /var/www/html/wp-config.php

Thao tác này sẽ mở một file văn bản chứa đầy các biến cấu hình và một số văn bản giải thích. Ở phía trên cùng là thông tin kết nối database của ta :

wp-config.php
/** The name of the database for WordPress */ define('DB_NAME', 'database_name');  /** MySQL database username */ define('DB_USER', 'database_username');  /** MySQL database password */ define('DB_PASSWORD', 'database_password'); 

Kiểm tra xem ba biến này có chính xác hay không dựa trên profile của bạn. Nếu chúng có vẻ không ổn, hãy cập nhật khi thích hợp, lưu và thoát ( CTRL-O , sau đó CTRL-X nếu bạn đang sử dụng nano ). Ngay cả khi thông tin đăng nhập có vẻ chính xác, bạn nên thử kết nối với database từ dòng lệnh, chỉ đảm bảo . Copy paste các chi tiết ngay từ file cấu hình vào lệnh sau:

  • mysqlshow -u database_username -p

Bạn sẽ được yêu cầu nhập password . Dán nó vào và nhấn ENTER . Nếu bạn gặp lỗi Access bị từ chối , tên user hoặc password của bạn không chính xác. Nếu không, lệnh mysqlshow sẽ hiển thị tất cả các database mà user được chỉ định có quyền truy cập:

Output
+--------------------+ | Databases | +--------------------+ | information_schema | | database_name | +--------------------+

Xác minh một trong các database khớp chính xác với những gì trong file cấu hình WordPress của bạn. Nếu đúng, bạn đã xác minh cấu hình của bạn là chính xác và WordPress sẽ có thể đăng nhập vào database thành công. Reload trang web để xem lỗi đã biến mất chưa.

Vẫn không làm việc? Điều tiếp theo cần thử là sửa chữa database .

Bước 3 - Sửa chữa database WordPress

Đôi khi, do nâng cấp không thành công, sự cố database hoặc plugin bị lỗi, database WordPress của bạn có thể bị hỏng. Sự cố này có thể tự xuất hiện dưới dạng lỗi kết nối database , vì vậy nếu sự cố của bạn không phải là server MySQL hoặc file cấu hình, hãy thử sửa chữa database của bạn.

WordPress cung cấp một tiện ích tích hợp để sửa chữa database . Nó bị tắt theo mặc định, vì nó không có kiểm soát truy cập và có thể là một vấn đề bảo mật. Ta sẽ bật tính năng này, chạy sửa chữa và sau đó vô hiệu hóa nó.

Mở lại file wp-config.php :

  • sudo nano /var/www/html/wp-config.php

Trên bất kỳ dòng trống nào, hãy dán như sau:

wp-config.php
define('WP_ALLOW_REPAIR', true); 

Điều này xác định một biến mà WordPress sẽ tìm kiếm khi xác định xem nó có nên bật tính năng sửa chữa hay không.

Lưu và đóng file . Chuyển sang trình duyệt của bạn và tải địa chỉ sau, đảm bảo thay thế domain hoặc địa chỉ IP của trang web cho phần được đánh dấu:

http://www.example.com/wp-admin/maint/repair.php 

Trang sửa chữa database sẽ tải:

Trang sửa chữa database  WordPress

Nhấn nút Database sửa chữa và bạn sẽ được đưa đến trang kết quả, nơi bạn có thể xem các kiểm tra và sửa chữa đang diễn ra trong thời gian thực:

Trang kết quả sửa chữa database  WordPress

Sau khi quá trình kết thúc, hãy nhớ mở lại file wp-config.php và xóa dòng ta vừa paste vào .

Bạn có nhận thấy bất kỳ sửa chữa nào được thực hiện? Hãy thử lại trang web và kiểm tra xem lỗi đã biến mất chưa. Nếu tìm thấy sự cố không thể sửa chữa, bạn có thể cần khôi phục database từ bản backup nếu bạn có . Vui lòng tham khảo hướng dẫn Cách Nhập và Xuất Database trong MySQL của ta để biết chi tiết về cách thực hiện.

Nếu không tìm thấy sự cố nào với database , thì ta vẫn chưa phát hiện ra sự cố. Đó có thể là những vấn đề không liên tục mà ta đang bỏ sót hoặc điều gì đó khó hiểu hơn. Hãy kết thúc với một vài khả năng khác để thử.

Kết luận

Phần lớn các vấn đề “Lỗi khi cài đặt kết nối database ” đã được giải quyết bằng ba bước trên. Tuy nhiên, có thể có nhiều vấn đề khó nắm bắt hơn tiếp tục xuất hiện theo cách này. Dưới đây là một số bài viết khác có thể hữu ích trong việc theo dõi và vô hiệu hóa nguyên nhân gây ra lỗi này:

  • Một nguồn lưu lượng truy cập cao thường xuyên (và do đó hiệu suất kém và lỗi) là một cuộc tấn công bạo lực phổ biến đối với cài đặt WordPress. Bạn có thể vô hiệu hóa cuộc tấn công theo Cách bảo vệ WordPress khỏi các cuộc tấn công XML-RPC .
  • Bạn có thể tiết kiệm một số tài nguyên server bằng cách triển khai bộ nhớ đệm trên cài đặt WordPress của bạn . Có rất nhiều plugin bộ nhớ đệm đơn giản dành cho WordPress. Hướng dẫn của ta , Cách cấu hình bộ nhớ đệm Redis để tăng tốc WordPress sẽ chỉ cho bạn cách cấu hình cache ẩn được hỗ trợ bởi Redis đặc biệt hiệu quả.

Tags:

Các tin trước

Cách bảo mật database OrientDB của bạn trên Ubuntu 16.04 2017-03-24
Cách backup, khôi phục và di chuyển database MongoDB trên Ubuntu 14.04 2016-04-15
Cách nhập và xuất database MongoDB trên Ubuntu 14.04 2016-04-15
Cách chạy database cụm đa node với Cassandra trên Ubuntu 14.04 2016-03-31
Cách nhập và xuất database OrientDB trên Ubuntu 14.04 2016-01-06
Cách thiết lập database từ xa để tối ưu hóa hiệu suất trang web với MySQL 2014-04-17
Cách kết nối Node.js với database MongoDB trên VPS 2013-10-09
Cách thiết lập database MongoDB có thể mở rộng 2013-02-26