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:
OutputActive 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/ .
Output2017-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 :
/** 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:
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:
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:
 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ả.
Các tin liên quan
Cách bảo mật database OrientDB của bạn trên Ubuntu 16.042017-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
 

