Lỗi thiết lập kết nối cơ sở dữ liệu trên wordpress

Trong khi lướt web, chắc hẳn bạn đã từng ít nhất vài lần nhìn thấy lỗi Error Establishing a Database Connection(Lỗi thiết lập kết nối cơ sở dữ liệu). Đây là lỗi trong thiết lập kết nối cơ sở dữ liệu, xảy ra bởi nhiều nguyên nhân. Đối với những người mới bắt đầu với WordPress, lỗi này làm bạn rất khó chịu, nhất là khi nó xảy ra trên chính trang WordPress của bạn mặc dù bạn không có bất cứ thay đổi gì trên trang. Khi mình gặp phải vấn đề này trên trang web của mình, phải mất hơn 20 phút thì mình mới phát hiện và xử lý được vấn đề. Trong bài viết này, mình tổng hợp các giải pháp giúp các bạn có thể tìm hiểu cũng như khắc phục được lỗi Error Establishing a Database Connection trong WordPress.

Lưu ý: Trước khi thực hiện bất kỳ một thay đổi cơ sở dữ liệu nào, hãy đảm bảo rằng bạn đã có đầy đủ bản backups.

Tại sao bạn nhận được lỗi này?

Nói ngắn gọn, bạn nhận được lỗi này vì WordPress không thể thiết lập một kết nối cơ sở dữ liệu. Có nhiều lý do khác nhau làm WordPress không thể thiết lập kết nối cơ sở dữ liệu: có thể do thông tin đăng nhập cơ sở dữ liệu của bạn bị sai hoặc đã được thay đổi, có thể do máy chủ cơ sở dữ liệu của bạn không phản hồi, cũng có thể do cơ sở dữ liệu của bạn bị hỏng. Theo kinh nghiệm của mình, lỗi này xảy ra phần lớn do lỗi ở server, tuy nhiên lỗi cũng xảy ra do các yếu tố khác.

Có phải lỗi xảy ra ở /wp-admin/ ?

Đầu tiên, hãy đảm bảo rằng bạn nhận được cùng một lỗi trên cả front-end và back-end của trang web (wp-admin). Nếu trên cả hai trang bạn đều nhận được lỗi “Error establishing a database connection” thì tiến hành các bước tiếp theo. Nếu bạn nhận được các lỗi khác nhau trên wp-admin, ví dụ như lỗi “One or more database tables are unavailable. The database may need to be repaired” (Một hoặc nhiều bảng cơ sở dữ liệu không có. Cơ sở dữ liệu cần được sửa chữa) thì bạn cần phải sửa chữa cơ sở dữ liệu của bạn.

Bạn sửa lỗi bằng cách thêm dòng sau vào file wp-config của bạn:

1
define('WP_ALLOW_REPAIR', true);

Sau đó, bạn có thể xem các thiết lập bằng cách truy cập trang http://www.yoursite.com/wp-admin/maint/repair

Nhớ rằng người dùng không cần phải đăng nhập để truy cập chức năng này khi định nghĩa được thiết lập vì mục đích chính của nó là sửa chữa cơ sở dữ liệu bị lỗi, người dùng không thường xuyên đăng nhập khi cơ sở dữ liệu bị hỏng. Do đó, khi thực hiện sửa chữa và tối ưu hóa cơ sở dữ liệu của bạn, hãy bỏ đi phần này trong file wp-config.

Nếu việc sửa chữa này không giúp bạn khắc phục được lỗi hoặc bạn gặp sự cố khi chạy sửa chữa thì tiếp tục đọc bài viết để tìm một giải pháp khác.

Kiểm tra file WP-Config

WP-Config là file quan trọng nhất trong toàn bộ trình cài đặt WordPress của bạn. Đây là nơi bạn xác định các chi tiết cho WordPress để kết nối với cơ sở dữ liệu của bạn. Nếu bạn thay đổi mật khẩu gốc của bạn hoặc mật khẩu người sử dụng cơ sở dữ liệu thì bạn cần phải thay đổi file này. Đầu tiên, bạn luôn cần phải kiểm tra mọi thứ trong file wp-config của bạn, chúng phải giống như sau:

1
2
3
4
define('DB_NAME', 'database-name');
define('DB_USER', 'database-username');
define('DB_PASSWORD', 'database-password');
define('DB_HOST', 'localhost');

Giá trị DB_Host của bạn có thể không là localhost mà tùy thuộc vào host, nó sẽ khác nhau. Đối với host phổ biến như HostGator,BlueHost, Site5 thì nó là localhost

Một số người cho biết họ sửa được lỗi bằng cách thay thế localhost bằng IP. Đây là cách phổ biến để sửa lỗi này khi chạy WordPress trên môi trường local server. Ví dụ trên MAMP, giá trị DB_Host khi thay đổi thành IP:

1
define('DB_HOST', '127.0.0.1:8889');

IP là khác nhau đối với mỗi dịch vụ web hosting online.

Nếu mọi thứ trong file wp-config đều đúng (chắc chắn kiểm tra cả lỗi chính tả) thì tiếp theo chúng ta nghĩ tới trường hợp có vấn đề gì đó trên server.

Kiểm tra host web của bạn (MySQL Server)

Thông thường, bạn thấy thông báo lỗi Error Establishing a Database Connection khi trang web của bạn nhận được quá nhiều lượng truy cập. Về cơ bản, host server của bạn khi đó không thể xử lý được việc tải trang web (đặc biệt khi bạn đang chia sẻ hosting), trang web của bạn sẽ rất chậm và thậm chí một số người dùng sẽ thấy lỗi. Lúc này, điều tốt nhất bạn nên làm là liên hệ với nhà cung cấp hosting của bạn và nhờ họ kiểm tra MySQL server của bạn.

Nếu bạn muốn kiểm tra MySQL server đang hoạt động của bạn, bạn có thể kiểm tra các trang web khác trên cùng một server để xem chúng có gặp vấn đề gì không. Nếu các trang web đó cũng nhận được cùng một lỗi thì chắc chắn là có vấn đề ở MySQL server của bạn. Nếu bạn không có bất kỳ trang web nào khác trên cùng tài khoản hosting với web đang gặp lỗi thì bạn đơn giản chỉ cần vào cPanel của bạn, thử truy cập vào  và kết nối cơ sở dữ liệu. Nếu bạn có thể kết nối được thì cần phải xác minh xem người sử dụng cơ sở dữ liệu của bạn có được quyền kết nối không. Tạo một file mới tên testconnection và dán đoạn code sau vào:

1
2
3
4
5
6
7
8
9
<?php
$link = mysql_connect('localhost', 'root', 'password');
if (!$link)
{
     die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

Bạn hãy thay thế tên người dùng và mật khẩu. Nếu kết nối thành công có nghĩa là người dùng của bạn được quyền kết nối và có gì đó bị sai. Quay trở lại file wp-config của bạn để đảm bảo rằng mọi thứ đều đúng (kiểm tra lại cả lỗi chính tả).

Nếu bạn không thể kết nối với cơ sở dữ liệu bằng cách vào  thì chắc hẳn đã có gì đó xảy ra với server của bạn. Điều này không có nghĩa là MySQL server của bạn bị tắt mà có thể do người dùng của bạn không được quyền kết nối.

Trong trường hợp của mình, MySQL server của mình đang hoạt động, tất cả các trang web khác trên máy chủ đang làm việc tốt, ngoại trừ trang web đang báo lỗi. Sau khi thử vào  thì mình không còn thấy báo lỗi:

#1045 – Access denied for user ‘foo’@’%’ (using password: YES)

Mình liên lạc với HostGator nhờ sự hỗ trợ của họ và họ đã nhanh chóng giúp khắc phục lỗi. Bằng cách nào đó, việc kết nối của người dùng được thiết lập lại, quyền truy cập được khôi phục và trang web của mình hoạt động lại bình thường.

Vì vậy, nếu bạn nhận được lỗi bị từ chối truy cập khi kết nối với  của bạn hoặc qua kết quả testconnection, bạn nên liên hệ với host của bạn ngay lập tức để họ hỗ trợ bạn sửa lỗi.

Các giải pháp khắc phục khác

Trường hợp 1

Người dùng của bạn nhận được thông báo lỗi là cơ sở dữ liệu cần phải được sửa chữa nhưng ngay cả khi bạn đã sửa chữa cơ sở dữ liệu, lỗi vẫn còn. Sau khi thử qua nhiều cách, bạn phát hiện ra lỗi là do url trang web đã bị thay đổi. Bạn chạy truy vấn SQL bằng cách vào phpMyAdmin:

1
UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'

Hãy thay thế YOUR_SITE_URL bằng url thực tế, ví dụ như http://www.fasolla.com. wp_options sẽ khác đi nếu bạn thay đổi tiền tố cơ sở dữ liệu mặc định của WordPress. Bằng cách này, nhiều người đã giải quyết được lỗi.

Trường hợp 2

Bạn có thể kết nối cơ sở dữ liệu với testconnection và thay đổi người sử dụng wp-config thành root, WordPress hoạt động trở lại tốt. Sau đó, bạn hoàn nguyên các thiết lập cơ sở dữ liệu người dùng về như cũ và web vẫn tiếp tục làm việc bình thường. Bạn không thể tìm ra sai sót nhưng có thể đó là do lỗi chính tả.

Trường hợp 3

Bạn bỏ các nội dung của active_plugins và chỉnh sửa nội dung của recently_edited trong bảng wp_options. Về cơ bản, việc làm này có thể giúp sửa được lỗi.

Ví dụ cụ thể cách làm:

  • Trang web của bạn là http://www.fasolla.com/ có host server ở GoDaddy.
  • Bạn đăng nhập vào GoDaddy và đến My Account >> Web Hosting, bấm vào nút LAUNCH cho tên miền website và sẽ thấy một cửa sổ Hosting Control Center mới.
  • Bạn nhấp chuột vào Databases >> MySQL, chọn ‘Manage via phpMyAdmin’ cho tên cơ sở dữ liệu thực tế của WordPress thì sẽ thấy mở một trình duyệt mới cho bạn nhập thông tin đăng nhập.
  • Trong bảng wp_options, bạn bỏ các nội dung của active_plugins và chỉnh sửa nội dung của recently_edited.

Bạn cần lưu ý rằng có khi những biện pháp trên không thể giúp xử lý được lỗi của bạn, do đó bạn nên có đầy đủ bản backups để đề phòng sai sót. Có nhiều người dùng đơn giản chỉ cần tải lên bản backups mới của WordPress là đã sửa được lỗi.

Error Establishing a Database Connection thực sự là một lỗi gây nhiều khó khăn trong WordPress. Nếu bạn đã từng gặp phải lỗi này thì hãy chia sẻ về những gì mà bạn đã trải qua cũng như cách bạn đã làm để khắc phục lỗi cho những người khác cùng biết để có thể nhanh chóng tìm được giải pháp xử lý.



Câu trả lời có giúp được bạn không?

Thêm vào danh mục cần quan tâm Thêm vào danh mục cần quan tâm

In bài viết In bài viết