Docker wordpress error establishing a database connection

I have set up a server to host multiple websites according to this tutorial: https://blog.ssdnodes.com/blog/host-multiple-ssl-websites-docker-nginx/ I have also configured a docker-compose.yml for

I have set up a server to host multiple websites according to this tutorial: https://blog.ssdnodes.com/blog/host-multiple-ssl-websites-docker-nginx/

I have also configured a docker-compose.yml for wordpress like they did in example 2 in the same tutorial. But when I open the website, I get an «Error establishing a database connection» Error. I remember doing this a few months back with everything working fine, but I cant remember what I did differently.

This is the error message I receive (multiple times) after typing docker-compose up

wp_test           | MySQL Connection Error: (1045) Access denied for user 'wordpress'@'172.20.0.9' (using password: YES)
wp_test_db        | 2020-02-23T21:00:45.772510Z 11 [Note] Access denied for user 'wordpress'@'172.20.0.9' (using password: YES)

My docker-compose.yml file looks like this:

version: "3"

services:
   db_node_domain:
     image: mysql:5.7
     volumes:
        - db_data:/var/lib/mysql
     restart: always
     environment:
        MYSQL_ROOT_PASSWORD: somewordpress
        MYSQL_DATABASE: wordpress
        MYSQL_USER: wordpress
        MYSQL_PASSWORD: wordpress
     container_name: wp_test_db

   wordpress:
     depends_on:
        - db_node_domain
     image: wordpress:latest
     expose:
        - 80
     restart: always
     environment:
        VIRTUAL_HOST: blog.example.com
        LETSENCRYPT_HOST: blog.example.com
        LETSENCRYPT_EMAIL: foo@example.com
        WORDPRESS_DB_HOST: db_node_domain:3306
        WORDPRESS_DB_USER: wordpress
        WORDPRESS_DB_PASSWORD: wordpress
     container_name: wp_test
volumes:
  db_data:

networks:
  default:
    external:
      name: nginx-proxy

I have tried to stop and start the the image, as suggested here: https://www.reddit.com/r/docker/comments/ahzv5d/wordpress_cant_connect_to_mysql/

I have also tried another wordpress docker-config.yml and added the nginx paramaters myselve, but got the same error message https://docs.docker.com/compose/wordpress/

EDIT
I got new error messages

wp_test_db        | 2020-02-23T22:09:40.654580Z 0 [Note] mysqld (mysqld 5.7.29) starting as process 1 ...
wp_test_db        | 2020-02-23T22:09:40.659627Z 0 [Note] InnoDB: PUNCH HOLE support available
wp_test_db        | 2020-02-23T22:09:40.659883Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
wp_test_db        | 2020-02-23T22:09:40.659958Z 0 [Note] InnoDB: Uses event mutexes
wp_test_db        | 2020-02-23T22:09:40.660412Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
wp_test_db        | 2020-02-23T22:09:40.660451Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
wp_test_db        | 2020-02-23T22:09:40.660811Z 0 [Note] InnoDB: Using Linux native AIO
wp_test_db        | 2020-02-23T22:09:40.661814Z 0 [Note] InnoDB: Number of pools: 1
wp_test_db        | 2020-02-23T22:09:40.662418Z 0 [Note] InnoDB: Using CPU crc32 instructions
wp_test_db        | 2020-02-23T22:09:40.667522Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
wp_test_db        | 2020-02-23T22:09:40.681674Z 0 [Note] InnoDB: Completed initialization of buffer pool
wp_test_db        | 2020-02-23T22:09:40.687033Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
wp_test_db        | 2020-02-23T22:09:40.701423Z 0 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4000!
wp_test_db        | 2020-02-23 22:09:40 0x7f7ce62ee740  InnoDB: Assertion failure in thread 140174414505792 in file ut0ut.cc line 918
wp_test_db        | InnoDB: We intentionally generate a memory trap.
wp_test_db        | InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
wp_test_db        | InnoDB: If you get repeated assertion failures or crashes, even
wp_test_db        | InnoDB: immediately after the mysqld startup, there may be
wp_test_db        | InnoDB: corruption in the InnoDB tablespace. Please refer to
wp_test_db        | InnoDB: http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
wp_test_db        | InnoDB: about forcing recovery.
wp_test_db        | 22:09:40 UTC - mysqld got signal 6 ;
wp_test_db        | This could be because you hit a bug. It is also possible that this binary
wp_test_db        | or one of the libraries it was linked against is corrupt, improperly built,
wp_test_db        | or misconfigured. This error can also be caused by malfunctioning hardware.
wp_test_db        | Attempting to collect some information that could help diagnose the problem.
wp_test_db        | As this is a crash and something is definitely wrong, the information
wp_test_db        | collection process might fail.
wp_test_db        | 
wp_test_db        | key_buffer_size=8388608
wp_test_db        | read_buffer_size=131072
wp_test_db        | max_used_connections=0
wp_test_db        | max_threads=151
wp_test_db        | thread_count=0
wp_test_db        | connection_count=0
wp_test_db        | It is possible that mysqld could use up to 
wp_test_db        | key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68196 K  bytes of memory
wp_test_db        | Hope that's ok; if not, decrease some variables in the equation.
wp_test_db        | 
wp_test_db        | Thread pointer: 0x0
wp_test_db        | Attempting backtrace. You can use the following information to find out
wp_test_db        | where mysqld died. If you see no messages after this, something went
wp_test_db        | terribly wrong...
wp_test_db        | stack_bottom = 0 thread_stack 0x40000
wp_test_db        | mysqld(my_print_stacktrace+0x2c)[0x5643574c60cc]
wp_test_db        | mysqld(handle_fatal_signal+0x479)[0x564356de87b9]
wp_test_db        | /lib/x86_64-linux-gnu/libpthread.so.0(+0x110e0)[0x7f7ce5ecb0e0]
wp_test_db        | /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcf)[0x7f7ce4657fff]
wp_test_db        | /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f7ce465942a]
wp_test_db        | mysqld(+0x699b25)[0x564356dbeb25]
wp_test_db        | mysqld(_ZN2ib5fatalD1Ev+0x12d)[0x56435782ed8d]
wp_test_db        | mysqld(+0x11b68f1)[0x5643578db8f1]
wp_test_db        | mysqld(+0x11b6f28)[0x5643578dbf28]
wp_test_db        | mysqld(_Z6fil_ioRK9IORequestbRK9page_id_tRK11page_size_tmmPvS8_+0x2b0)[0x5643578e5110]
wp_test_db        | mysqld(_Z13buf_read_pageRK9page_id_tRK11page_size_t+0xce)[0x56435789a33e]
wp_test_db        | mysqld(_Z16buf_page_get_genRK9page_id_tRK11page_size_tmP11buf_block_tmPKcmP5mtr_tb+0x4aa)[0x56435786957a]
wp_test_db        | mysqld(_Z31trx_rseg_get_n_undo_tablespacesPm+0x143)[0x56435780d1f3]
wp_test_db        | mysqld(+0x698c99)[0x564356dbdc99]
wp_test_db        | mysqld(_Z34innobase_start_or_create_for_mysqlv+0x2f3d)[0x5643577da06d]
wp_test_db        | mysqld(+0xf80438)[0x5643576a5438]
wp_test_db        | mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x4f)[0x564356e390ff]
wp_test_db        | mysqld(+0xb8c0f6)[0x5643572b10f6]
wp_test_db        | mysqld(_Z40plugin_register_builtin_and_init_core_sePiPPc+0x2f0)[0x5643572b4300]
wp_test_db        | mysqld(+0x6bbece)[0x564356de0ece]
wp_test_db        | mysqld(_Z11mysqld_mainiPPc+0xc71)[0x564356de2a71]
wp_test_db        | /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7f7ce46452e1]
wp_test_db        | mysqld(_start+0x2a)[0x564356dd8eaa]
wp_test_db        | The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
wp_test_db        | information that should help you find out what is causing the crash.

Great tutorial!

Everything works except the Wp install can’t connect to the database.

https://myapp.local

Gives me

Warning: mysqli_real_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/html/web/wp/wp-includes/wp-db.php on line 1612 Warning: mysqli_real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/html/web/wp/wp-includes/wp-db.php on line 1612

php_network_getaddresses: getaddrinfo failed: Name or service not known

or

Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /var/www/html/web/wp/wp-includes/wp-db.php on line 1612
Connection refused
Error establishing a database connection
This either means that the username and password information in your wp-config.php file is incorrect or we can’t contact the database server at db:3306. This could mean your host’s database server is down.

Are you sure you have the correct username and password?
Are you sure that you have typed the correct hostname?
Are you sure that the database server is running?

All DB credentials are the same. Changed everything to ‘wordpress’ but the wp install still wont connect. Is there a way to see what the containers are setting the login info as? Or see the generated wp-config.php settings?

I tried adding a phpmyadmin container. It was visible but couldn’t log in.

This is by far the closest tutorial for what i need & would be amazing to get over this final hurdle. I’ve been using docker a lot and not had this issue before. However none of my previous projects use a local domain or ssl.

D.

docker-compose.yml

version: '3.6'
services:
  nginx:
    image: nginx:latest
    container_name: myapp-nginx
    ports:
      - '8084:80'
      - '443:443'
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./src:/var/www/html:rw,cached
      - ./certs:/etc/certs
    depends_on:
      - wordpress
    restart: always

  db:
    image: mysql:5.7
    container_name: myapp-mysql
    volumes:
       - './data/db:/var/lib/mysql:delegated'
    environment:
      - MYSQL_ROOT_PASSWORD=wordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    restart: always
    # ports:
    #   - '3306:3306'

  wordpress:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: myapp-wordpress
    volumes:
      - ./src:/var/www/html:rw,cached
      - ./config/php.ini:/usr/local/etc/php/conf.d/php.ini
    environment:
      - WORDPRESS_DB_NAME=wordpress
      - WORDPRESS_TABLE_PREFIX=wp_
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_PASSWORD=wordpress
    depends_on:
      - db
    restart: always

  composer:
    image: composer/composer
    container_name: myapp-composer
    working_dir: /var/www/html
    restart: 'no'
    volumes:
      - ./src:/var/www/html:rw,cached

.env

DB_HOST=db:3306
DB_NAME=wordpress
DB_USER=wordpress
DB_PASSWORD=wordpress
# DB_PREFIX=wp_

WP_ENV=development
WP_HOME=https://myapp.local
WP_SITEURL=${WP_HOME}/wp

# Generate your keys here: https://roots.io/salts.html
AUTH_KEY='generateme'
SECURE_AUTH_KEY='generateme'
LOGGED_IN_KEY='generateme'
NONCE_KEY='generateme'
AUTH_SALT='generateme'
SECURE_AUTH_SALT='generateme'
LOGGED_IN_SALT='generateme'
NONCE_SALT='generateme'

feedback during build

docker-compose up -d --force-recreate --build
Creating network "wordpress-nginx-docker-compose_default" with the default driver
Building wordpress
Step 1/4 : FROM urre/wordpress-nginx-docker-compose-image
 ---> c3797de1da74
Step 2/4 : RUN curl -o /bin/wp-cli.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
 ---> Using cache
 ---> 2c780d637b20
Step 3/4 : RUN chmod +x /bin/wp-cli.phar
 ---> Using cache
 ---> 632824aec449
Step 4/4 : RUN cd /bin && mv wp-cli.phar wp
 ---> Using cache
 ---> 7a7b5fb81401

Successfully built 7a7b5fb81401
Successfully tagged wordpress-nginx-docker-compose_wordpress:latest
Creating myapp-composer  ... done
Creating myapp-mysql    ... done
Creating myapp-wordpress ... done
Creating myapp-nginx     ... done

TLDR; I get an error «Error Establishing A Database Connection» after running docker-compose.yml.

I’ll put my configuration down bellow so if anyone needs it feel free to use it.

After I made the connection I still have issue with loading the project. Now I get this error I get: DB error from wordpress

This is the line in that error:

mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );

My guess something in that wp-config file is set to a wrong value.

This is

I checked all the wp-config files I could.

I made a new database called «wordpress» and imported data to it via terminal.

I connected to my SQL with username and password so I think that also ok.

The part I think it’s wrong is the port and I don’t know how to check if its ok.

I can’t change the port to 3306 because I can’t run docker-compose with it (it will fail because 3306 is taken, so I’m using 3307). I tried to change it into «3306», «3307» and localhost but it didn’t work.

This are the files: docker-compose.yml

version: "3"

services:
  nginx:
    image: nginx
    ports:
      - 8080:80
    volumes:
      - ./src:/src
      - ./site.conf:/etc/nginx/conf.d/default.conf
      - ./wp-config.php:/src/wp-config.php

    links:
      - php
  db:
    image: mysql
    ports:
      - 3307:3306
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: toor
    volumes:
      - db-data:/var/lib/mysql
  php:
    build:
      context: .
      dockerfile: ./php/Dockerfile
    image: php:7-fpm
    volumes:
      - ./src:/src
      - ./wp-config.php:/src/wp-config.php

volumes:
  db-data:

wp-config

<?php
/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the installation.
 * You don't have to use the web site, you can copy this file to "wp-config.php"
 * and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * MySQL settings
 * * Secret keys
 * * Database table prefix
 * * ABSPATH
 *
 * @link https://wordpress.org/support/article/editing-wp-config-php/
 *
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'root' );

/** MySQL database password */
define( 'DB_PASSWORD', 'toor' );

/** MySQL hostname */
define( 'DB_HOST', 'mysql:3307' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

/**#@+
 * Authentication unique keys and salts.
 *
 * Change these to different unique phrases! You can generate these using
 * the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
 *
 * You can change these at any point in time to invalidate all existing cookies.
 * This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

/**#@-*/

/**
 * WordPress database table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = 'wp_';

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the documentation.
 *
 * @link https://wordpress.org/support/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', true );

/* Add any custom values between this line and the "stop editing" line. */



/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
    define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

site.conf

server {
    index index.php index.html;
    server_name _;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /src;
    location / {
        # This is cool because no php is touched for static content.
        # include the "?$args" part so non-default permalinks doesn't break when using query string
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ .php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    #stolen from the nginx.conf
    # BEGIN W3TC Minify cache
    location ~ /wp-content/cache/minify/.*js_gzip$ {
        gzip off;
        types {}
        default_type application/x-javascript;
        add_header Content-Encoding gzip;
        expires 31536000s;
        etag on;
        if_modified_since exact;
        add_header Referrer-Policy "no-referrer-when-downgrade";
        add_header Vary "Accept-Encoding";
    }
    location ~ /wp-content/cache/minify/.*css_gzip$ {
        gzip off;
        types {}
        default_type text/css;
        add_header Content-Encoding gzip;
        expires 31536000s;
        etag on;
        if_modified_since exact;
        add_header Referrer-Policy "no-referrer-when-downgrade";
        add_header Vary "Accept-Encoding";
    }
    # END W3TC Minify cache
    # BEGIN W3TC Page Cache cache
    location ~ /wp-content/cache/page_enhanced.*gzip$ {
        gzip off;
        types {}
        default_type text/html;
        add_header Content-Encoding gzip;
        etag on;
        if_modified_since exact;
        add_header Referrer-Policy "no-referrer-when-downgrade";
    }
    # END W3TC Page Cache cache
    # BEGIN W3TC Browser Cache
    gzip on;
    gzip_types text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xsd text/xsl text/xml image/bmp application/java application/msword application/vnd.ms-fontobject application/x-msdownload image/x-icon application/json application/vnd.ms-access video/webm application/vnd.ms-project application/x-font-otf application/vnd.ms-opentype application/vnd.oasis.opendocument.database application/vnd.oasis.opendocument.chart application/vnd.oasis.opendocument.formula application/vnd.oasis.opendocument.graphics application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.text audio/ogg application/pdf application/vnd.ms-powerpoint image/svg+xml application/x-shockwave-flash image/tiff application/x-font-ttf audio/wav application/vnd.ms-write application/font-woff application/font-woff2 application/vnd.ms-excel;
    location ~ .(css|htc|less|js|js2|js3|js4)$ {
        expires 31536000s;
        etag on;
        if_modified_since exact;
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ .(html|htm|rtf|rtx|txt|xsd|xsl|xml)$ {
        etag on;
        if_modified_since exact;
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ .(asf|asx|wax|wmv|wmx|avi|avif|avifs|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|webp|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|webm|mpp|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|ogv|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|_ttf|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ {
        expires 31536000s;
        etag on;
        if_modified_since exact;
        try_files $uri $uri/ /index.php?$args;
    }
    add_header Referrer-Policy "no-referrer-when-downgrade";
    # END W3TC Browser Cache
    # BEGIN W3TC Minify core
    set $w3tc_enc "";
    if ($http_accept_encoding ~ gzip) {
        set $w3tc_enc _gzip;
    }
    if (-f $request_filename$w3tc_enc) {
        rewrite (.*) $1$w3tc_enc break;
    }
    rewrite ^/wp-content/cache/minify/ /index.php last;
    # END W3TC Minify core
    # BEGIN W3TC Page Cache core
    set $w3tc_rewrite 1;
    if ($request_method = POST) {
        set $w3tc_rewrite 0;
    }
    if ($query_string != "") {
        set $w3tc_rewrite 0;
    }
    if ($request_uri !~ /$) {
        set $w3tc_rewrite 0;
    }
    if ($http_cookie ~* "(comment_author|wp-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle)") {
        set $w3tc_rewrite 0;
    }
    set $w3tc_preview "";
    if ($http_cookie ~* "(w3tc_preview)") {
        set $w3tc_preview _preview;
    }
    set $w3tc_ssl "";
    if ($scheme = https) {
        set $w3tc_ssl _ssl;
    }
    if ($http_x_forwarded_proto = 'https') {
        set $w3tc_ssl _ssl;
    }
    set $w3tc_enc "";
    if ($http_accept_encoding ~ gzip) {
        set $w3tc_enc _gzip;
    }
    if (!-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_ssl$w3tc_preview.html$w3tc_enc") {
      set $w3tc_rewrite 0;
    }
    if ($w3tc_rewrite = 1) {
        rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_ssl$w3tc_preview.html$w3tc_enc" last;
    }
    # END W3TC Page Cache core

    #end stolen
}

Это – один из худших кошмаров для владельца веб-сайтов. Вы вводите URL-адрес вашего сайта… однако вас приветствует не ваша главная страница, а нечто другое. Вместо этого вы видите пустой экран. Вне зависимости от того, по какой ссылке вы перешли, вас встречают зловещие слова «Error establishing a database connection».

error-establishing

Чем дольше ваш сайт будет лежать, тем больше трафика вы потеряете. А это означает потерянных подписчиков, клиентов, а также упущенный доход. Однако что вообще привело к такой ошибке? Что она означает? И, что самое важное, как исправить ее, чтобы вернуть свой сайт в нормальное состояние как можно быстрее?

В этой статье мы расскажем вам, что означает это сообщение об ошибке, что может вызывать его, а также посмотрим, как найти корень зла и исправить его.

Содержание

  1. Что означает «Error Establishing a Database Connection»?
  2. Что приводит к этой ошибке?
  3. Решение проблем с «Error Establishing a Database Connection»
  4. 1. Определяем, с чем произошла ошибка.
  5. 2. Проверяем учетные данные БД в wp-config
  6. 3.Все еще появляется ошибка?

Что означает «Error Establishing a Database Connection»?

Для начала давайте посмотрим на то, как WordPress отображает ваш сайт, и тогда станет ясно, почему эта ошибка настолько разрушительная. WordPress написан на PHP и MySQL. Вся информацию, которая составляет ваш сайт, хранится в базе данных MySQL, а PHP используется в WordPress для сохранения и получения этой информации из базы данных.

В целом, всякий раз, когда страница загружается на вашем сайте, она создается «на лету». Код PHP используется для того, чтобы получить доступ к базе данных MySQL и получить всю информацию, которая требуется для создания страницы. Одни PHP-запросы получают заголовок записи, другие – захватывают имя автора, третьи – берут дату публикации и т.д.

Вернемся к нашему сообщению об ошибке: «Error establishing a database connection». Оно означает, что по каким-то причинам PHP-код не смог соединиться с базой данной MySQL, чтобы получить информацию, которая требовалась для создания страницы.

Именно по этой причине на экране с ошибкой красуется лишь одно сообщение. Если вы не можете подключиться к базе данных, вы не знаете, что выводить на экран; нет никакой доступной информации о вашем сайте.

Что приводит к этой ошибке?

В то время как само сообщение об ошибке является достаточно ясным, причины, отвечающие за его появление, зачастую не совсем понятны.

Есть много разных причин, почему ваш сайт может иметь проблемы с подключением к вашей базе данных, однако их обычно можно разбить по трем категориям:

  1. Ваши учетные данные для входа в БД являются неверными. Ваша база данных использует отдельный логин и пароль. Если эти данные были недавно изменены, ваш сайт не сможет подключиться к БД, используя старые учетные данные.
  2. Ваша база данных была повреждена. Привести к такому печальному исходу могут самые разные причины, начиная с установки некачественного плагина и заканчивая ударом молнии в сервер (правда, это не самый распространенный вариант).
  3. Сервер, на котором расположена ваша БД, в данный момент не работает. Сервер с вашей базой данных может выйти из строя из-за каких-либо проблем или ошибок на стороне хостинг-компании. Также он может «лежать» из-за того, что на ваш сайт обрушился большой поток трафика, который сервер просто не смог обработать.

Таким образом, учитывая все возможные ситуации, как мы можем справиться с возникшей проблемой?

Решение проблем с «Error Establishing a Database Connection»

1. Определяем, с чем произошла ошибка.

Появляется ли эта ошибка только при обращении к wp-admin или же ваш сайт полностью лежит? А может, у вас другая ситуация: ваш сайт не работает, но при попытке входа вы видите несколько иную ошибку: «One or more database tables are unavailable. The database may need to be repaired»?

Все это говорит о том, что ваша база данных была повреждена.

WordPress обладает встроенным методом восстановления базы данных, однако для начала вам нужно будет включить эту возможность. Чтобы сделать это, вы должны иметь доступ к wp-config.php, который содержит ваши параметры и конфигурацию сборки WordPress.

Вы можете найти wp-config в корневой папке вашей сборки WordPress. Получить к ней доступ можно через cPanel: выберите File Manager и перейдите к папке, в которой у вас установлен WordPress.

Как только вы откроете wp-config, добавьте к нему следующую строку в самый конец файла:

define( 'WP_ALLOW_REPAIR', true );

Эта строка позволит вам оптимизировать и восстановить вашу базу данных. Перейдите по ссылке: www.yourwebsite.com/wp-admin/maint/repair.php (вместо yourwebsite.com введите реальный URL-адрес).

wordpress-database-repair

Вы должны увидеть страницу, показанную выше, с двумя возможностями восстановления – «repair» и «repair and optimize». Учтите, что оптимизация займет дополнительное время.

Обратите внимание, что страница восстановления базы данных никак не защищена; любой может получить доступ к этой странице по одному лишь URL. Как только вы восстановите вашу базу данных, обязательно удалите строку, добавленную ранее, из файла wp-config. В итоге вы ограничите доступ к этой странице.

Если ошибка пропала, вы можете закрыть wp-config и вернуться к нормальной работе с сайтом.

Если все это вам не помогло, давайте перейдем ко второму этапу восстановления сайта.

2. Проверяем учетные данные БД в wp-config

Если первый шаг не помог вам, то в таком случае вам нужно проверить, корректно ли заданы параметры базы данных в файле wp-config.

Удивлены, каким образом ваши учетные данные, работавшие ранее, перестали это делать? Смена хостинг-компании, изменение имени БД или пользовательской информации может привести к тому, что ваш wp-config файл будет содержать старые данные.

У вас может быть по-прежнему открыт файл wp-config, оставшийся еще с прошлого шага. В противном случайте войдите в cPanel хостинга и откройте File Manager. Перейдите к папке, в которую вы устанавливали WordPress, и найдите в ней файл, названный wp-config.php. Откройте его для редактирования.

Вы увидите учетные данные для вашей базы данных – обычно они расположены в самом верху файла. Выглядят они обычно следующим образом:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
 
/** MySQL database username */
define( 'DB_USER', 'username_here' );
 
/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );
 
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Как вы можете видеть, здесь есть несколько информационных разделов, которые требуются WordPress для доступа к вашей БД:

  1. Название БД (DB_NAME)
  2. Логин для входа (DB_USER)
  3. Пароль для входа (DB_PASSWORD)
  4. Хост базы данных (DB_HOST)

Если какое-либо из этих значений будет некорректным, WordPress не сможет подключиться к базе данных.

Проверить базу данных вне WordPress можно при помощи PHPMyAdmin – инструмента, который используется для редактирования базы данных MySQL. PHPMyAdmin включен во многие тарифные планы хостингов, и вы можете найти его в консоли cPanel.

Предупреждение: Будьте аккуратны при работе с PHPMyAdmin, поскольку этот инструмент ведет прямую работу с базой данных.

Как только вы войдете в PHPMyAdmin, вы увидите список баз данных на вашем сервере. Щелкните по той из них, которая будет соответствовать названию БД в файле wp-config (значение DB_NAME).

Не видите ни одной базы данных? В таком случае обратитесь к вашему хостингу, поскольку, скорее всего, проблема связана с вашим сервером.

После щелчка по названию базы данных вы увидите основной экран, содержащий названия таблиц вашей БД. Чтобы убедиться в том, что это – корректная БД, вы можете найти таблицу под названием wp_options и щелкнуть по опции Browse рядом с ней. Вы должны увидеть название вашего сайта, URL, а также все основные настройки. Теперь вы знаете, ту ли базу данных вы открыли. Если нет, то настройте ее должным образом в wp-config.

Давайте теперь проверим логин и пароль.

Есть несколько способов проверить их. Я предложу вам два варианта.

  1. Вы можете создать простой .php файл для тестирования того, сможете ли вы подключиться к вашей базе данных с учетными данными из файла wp-config
  2. Вы можете создать нового пользователя с паролем, и обновить файл wp-config, внеся в него новую информацию. Делать это надо в том случае, если первый способ не сработал.

Вариант 1. Тестируем существующие учетные данные.

Создаем файл в каталоге WordPress – пусть он называется testconnection.php (название не важно, главное чтобы он имел расширение .php). Вставляем в него следующий код:

<?php
$testConnection = mysql_connect('localhost', 'root', 'password');
if (!$testConnection) {
die('Error: ' . mysql_error());
}
echo 'Database connection working!';
mysql_close($testConnection);
?>

Как только вы создадите этот файл, просто перейдите по соответствующему URL в браузере (к примеру, site.com/testconnection.php). Вы увидите либо сообщение об удачном соединении, либо ошибку с детальной информацией.

Если логин и пароль не работают, мы можем создать нового пользователя.

Вариант 2. Создаем нового пользователя для БД (новый логин и пароль).

Сделать это мы можем с помощью другого инструмента в cPanel, который называется MySQL® Databases. Переходим к нему, затем прокручиваем вниз до заголовка: MySQL Users: Add New User. Задаем имя пользователя, а также сложный пароль. Щелкаем — Create User. Теперь прокручиваем до заголовка Add User To Database, и выбираем ваше новое имя пользователя и вашу базу данных WordPress, после чего щелкаем по Add. Обновляем файл wp-config, введя в него ваше новое имя пользователя и пароль.

Теперь название вашей БД, имя пользователя и пароль являются корректными. Остался только DB_HOST.

В большинстве случаем значение DB_HOST должно быть localhost, однако это зависит от настроек вашего хостинга. В WordPress есть список значений DB_HOST для популярных хостингов. Если ваш хостинг не перечислен там, то в таком случае обратитесь к нему за уточнениями.

3.Все еще появляется ошибка?

Если вы выполнили все шаги, приведенные выше, и ваш сайт все равно не работает, то в таком случае проблема заключается в вашем хостинге. Обратитесь в службу поддержки вашего хостинга и предоставьте им всю информацию по возникшей ошибке, а также те действия, которые вы совершили, пытаясь эту ошибку исправить – все это позволит компании быстрее справиться с проблемой.

Источник: www.elegantthemes.com/blog

Это сообщение об ошибке выглядит довольно серьезно.

Во-первых, перестаньте паниковать!

Но на самом деле, ошибка установки соединения с базой данных довольно распространена.

  • Понимание проблемы
  • Как исправить ошибку “error establishing a database connection”
    • Шаг 1: Свяжитесь со своим хостинг-провайдером
    • Шаг 2: Проверьте, не были ли повреждены файлы плагинов или тем
    • Шаг 3: Проверьте, не была ли повреждена база данных
    • Шаг 4. Проверьте учетные данные подключения к базе данных.
    • Шаг 5: Восстановите файлы WordPress
  • Как избежать возникновения этой ошибки в будущем?

WordPress использует две основные технологии: PHP и MySQL.

  • PHP – это язык программирования. Файлы ядра WordPress написаны на нем.
  • MySQL – это система управления базами данных (СУБД). WordPress использует базу данных MySQL для хранения содержимого сайта: записи, страницы, а заголовок сайта, макет виджетов и т. д.

Рассматриваемая в этой статье ошибка возникает, когда WordPress не может получить доступ к информации в базе данных с помощью команд PHP. Когда это происходит, WordPress выводит сообщение «Ошибка при установлении соединения с базой данных».

Несколько причин, из-за которых возникает эта ошибка:

  • Неверные учетные данные для входа. Если пароль и изменились, WordPress не сможет получать информацию из базы данных.
  • Поврежденные файлы WordPress. Это может возникать при обновлении плагинов, темы оформления и самого WordPress.
  • Поврежденная база данных. Например, если вредоносный плагин повредил базу данных изнутри. А также вследствие хакерской атаки, сбоем в теме и т.д.
  • Сервер базы данных не работает.
  • Большой объем трафика. Из-за этого база данных не может отвечать на запросы. Например, если один из ваших постов стал «вирусным», и одновременно множество пользователей пытаются зайти на ваш сайт.

Сначала порекомендую путь, который быстро решит проблему. Затем я буду копать глубже.

Шаг 1: Свяжитесь со своим хостинг-провайдером

Если ваш сайт работал минуту назад, а сейчас он недоступен, то ошибка может произойти на стороне хостинга. Качественные хостинги предлагают быструю поддержку через чат.

В нем расскажите, что у вас возникла ошибка “error establishing a database connection” и спросите:

  • работает ли сервер базы данных;
  • нет ли сейчас на сервере скачков активности или трафика.

Служба поддержки хостера сообщит, в порядке ли ваша база данных и есть ли подозрительные действия на сервере.

Если неисправность возникла не на стороне сервера, перейдите к шагу 2.

Например, может быть, вы обновили плагин или тему, и все рухнуло. Или подключили сайт к внешнему сервису, отредактировали файлы вручную. Если вы этого не делали, пропустите этот шаг.

Что можно сделать:

  • Подключитесь к хостингу через FTP. Вы можете сделать это с помощью бесплатного инструмента FileZilla.

Чтобы подключиться, необходимо ввести логин и пароль к вашему FTP- аккаунту. Самый простой способ получить их — это поискать первые электронные письма, которые вы получили от провайдера. А также запросить их у службы поддержки хостера.

Затем подключитесь к серверу и перейдите в корневую папку WordPress. Обычно она называется «public_html» или «www».

Если видите перед собой подпапки типа «wp-content» и «wp-admin», то вы находитесь в корне WordPress. Пример:

Шаг 2: Проверьте, не были ли повреждены файлы плагинов или тем

  • Зайдите в папку «wp-content» и переименуйте папку «plugins» . Задайте любое другое имя:

Шаг 2: Проверьте, не были ли повреждены файлы плагинов или тем - 2

  • Вернитесь на сайт и проверьте, не решилась ли проблема.

Если ошибка устранена, то теперь вы знаете, что она была вызвана каким-то плагином. Вернитесь на сервер, переименуйте папку обратно в «plugins». Зайдите в нее и измените имена папок отдельных плагинов. Самый простой способ сделать это — добавить в конце имени нижнее подчеркивание: «_»

Продолжайте, пока не выясните, когда ошибка возникает, а когда нет. Как только вы сузите круг поиска до одного конкретного плагина, удалите его или найдите решение проблемы в интернете.

  • Если ошибка сохраняется и после переименования папки «plugins», выполните тот же процесс для папки «themes».
  • Если это не поможет, переименуйте обе папки обратно в «plugins» и «themes». Ошибка связана с чем-то другим.
  • Зайдите в панель управления WordPress — YOURSITE.com/wp-admin

Если вы видите ту же ошибку: «error establishing a database connection», пропустите шаг.

  • Обратите внимание на то, что WordPress предлагает вам сделать. Один из вариантов:

Шаг 3: Проверьте, не была ли повреждена база данных

Если увидите сообщение, начинающееся с «One or more database tables are unavailable […]”. Это означает, что нужно «отремонтировать» базу данных.

Сначала подключитесь к сайту через FTP. Перейдите в корневой каталог WordPress и загрузите на свой компьютер файл «wp-config.php».

Откройте его в текстовом редакторе и строку в конце (прямо перед «That’s all, stop editing”):

define('WP_ALLOW_REPAIR', true);

Теперь загрузите файл обратно на сайт (через FTP). Перейдите по адресу YOURSITE.com/wp-admin/maint/repair.php

Вот что вы должны увидеть:

Шаг 3: Проверьте, не была ли повреждена база данных - 2

Нажмите любую из кнопок. После завершения автоматического восстановления вернитесь на сайт и посмотрите, исправлена ли ошибка.

Если ошибки нет, отлично! Но вам все равно нужно вернуть файл «wp-config.php» в его предыдущее состояние. Удалите строку, которую добавили, и повторно загрузите файл.

Если ошибка не устранена, перейдите к следующему шагу.

Если пароль и логин от базы данных изменились, возникает ошибка “error establishing a database connection”! Ее Исправление выполняется в файле wp-config.php. Я говорю об этих строках:

define('DB_NAME', 'some_db');
define('DB_USER', 'some_username');
define('DB_PASSWORD', 'some_pass');
define('DB_HOST', 'localhost');

Они содержат всю информацию, необходимую WordPress для подключения к базе данных. Если что-то в ней неверно, соединение не будет установлено.

Скопируйте указанные выше строки, вставьте в окно чата и спросите у службы поддержки хостинга, верны ли данные для подключения к вашей базе данных. Если нет, то специалист предоставит корректные значения для авторизации.

Скопируйте новые учетные данные и поместите их в файл wp-config.php.

define('DB_NAME', 'some_db'); /* это имя базы данных WordPress */
define('DB_USER', 'some_username');
define('DB_PASSWORD', 'some_pass');
define('DB_HOST', 'localhost'); /* это веб-адрес сервера вашей базы данных */

Повторно загрузите файл через FTP. После этого вернитесь на сайт и посмотрите, исправлена ​​ли ошибка. Если нет, переходим к последнему шагу.

Файлы ядра WordPress могут быть повреждены по ряду причин. Но можно восстановить стандартные файлы WordPress, используемые по умолчанию. Самый простой способ сделать это – загрузить чистую версию движка с сайта WordPress.org и установить ее поверх той, которая есть у вас.

Перейдите по этой ссылке и загрузите последнюю версию WordPress. Распакуйте архив и удалите из него папку «wp-content».

Далее подключитесь к своему сайту через FTP, перейдите в корень WordPress, загрузите новые файлы CMS. Перезапишите существующие файлы.

Шаг 5: Восстановите файлы WordPress

Когда загрузка будет завершена, вернитесь на свой сайт и проверьте результат. Если это не поможет, обратитесь еще раз в службу поддержки хостинга. Расскажите им обо всем, что вы сделали, и попросите помочь.

Идеального способа защиты сайта от ошибок соединения с базой данных нет. Но вероятность возникновения этих проблем можно минимизировать, придерживаясь некоторых правил:

  • Работайте только с хостингами, которые оптимизировали свои серверы для работы с WordPress. Благодаря этому вы всегда сможете рассчитывать на квалифицированную поддержку помощь.
  • Установите простой плагин резервного копирования, такой как UpdraftPlus. Благодаря ему у вас всегда будет рабочая резервная копия WordPress.

Я надеюсь, что это руководство вам поможет.

Окт 22, 2020

Elena B.

7хв. читання

Как исправить Ошибку Error Establishing a Database Connection в WordPress

В этом руководстве мы будет обсуждать различные методы устранения ошибки Error establishing a database connection в WordPress.

Проще говоря, это сообщение об ошибке указывает на то, что вашему сайту не удалось получить информацию из базы данных, необходимую для отображения страницы.

WordPress использует PHP в качестве основного языка и систему управления базами данных MySQL. Каждый раз, когда кто-то посещает ваш сайт, определённые команды PHP извлекают информацию о вашем сайте из базы данных и показывают её пользователю. Если этого не произойдёт, ваш сайт не сможет загрузиться, и появится сообщение об ошибке WordPress.

База данных — это программное обеспечение, используемое для удобной организации, хранения и извлечения данных в другое программное обеспечение. Поскольку WordPress является CMS, он использует базу данных для хранения всего содержимого вашего WordPress сайта. Таким образом, когда пользователь выполняет любые действия на вашем сайте, он отправляет запрос к базе данных.

Как результат ошибки Error establishing a database connection в WordPress, ваш сайт становится недоступным и теряет трафик.

Продолжайте читать это руководство, чтобы узнать все причины появления этой ошибки и пути её устранения.

Как устранить “Error Establishing a Database Connection” в WordPress?

Вот пять наиболее распространённых решений, с помощью которых можно исправить ошибку WordPress Error establishing a database connection. Но прежде чем вы попробуете, рекомендуем загрузить резервную копию данных вашего сайта. Вы можете найти больше информации о том, как это сделать, здесь.

Методы быстрого исправления ошибки

  1. Проверка данных для подключения к базе данных
  2. Восстановление базы данных WordPress
  3. Исправление повреждённые файлов
  4. Проверка сервера вашей базы данных
  5. Создание новой базы данных

Метод 1. Проверка данных для подключения к базе данных в wp-config.php

Одна из наиболее распространённых причин возникновения ошибок при попытке установить соедниение с базой данных, связана с неправильными учётными данными для входа. Это обычно происходит после того, как владелец веб-сайта переходит к другому хостинг-провайдеру. Если и интерфейс, и серверная часть вашего сайта выдают ошибку, этот метод должен решить проблему.

В первую очередь вам нужно проверить, совпадает ли информация для входа в базу данных с той, что ваш сайт хранит в файле wp-config.php.

Чтобы получить доступ к файлу wp-config, используйте FTP-клиент, например FileZilla, или файловый менеджер WordPress в панели управления хостингом.

Если вы решили использовать файловый менеджер, перейдите в папку /public_html/, щёлкните правой кнопкой мыши по файлу wp-config.php и выберите «Редактировать».

Файловый Менеджер в hPanel

Затем найдите следующие данные:

  • DB_NAME – имя базы данных
  • DB_USER – имя пользователя
  • DB_PASSWORD – пароль
  • DB_HOST – сервер базы данных

Информация в Файле wp-config.php

После этого перейдите в Базы данных MySQL и найдите своё текущее имя базы данных в разделе Список текущих баз данных и пользователей MySQL. Там вы увидите следующую информацию: имя базы данных, пользователя БД и хост.

Список Баз Данных в hPanel

Если данные для входа в вашем файле wp-config.php отличаются от тех, что вы нашли в разделе базы данных MySQL, измените информацию в файле wp-config.php.

Отредактируйте эти строки:

define('DB_NAME', 'в_этой_строке_введите_текущее_имя_вашей_базы_данных'); 
define('DB_USER', 'в_этой_строке_введите_ваше_текущее_имя_пользователя'); 
define('DB_HOST', 'в_этой_строке_введите_ваш_текущий_localhost');

Завершив редактирование файла, обновите ваш WordPress сайт, чтобы узнать, исчезла ли ошибка Error establishing a database connection.

Если ошибка не исчезла, возможно, значение DB_PASSWORD по-прежнему остаётся неправельным. Чтобы решить эту проблему, вам необходимо сбросить пароль MySQL.

Для этого просто вернитесь в меню Базы данных MySQL, щёлкните по своей текущей базе данных и выберите Изменить пароль. После ввода нового пароля нажмите кнопку Обновить.

Если имя вашей базы данных, имя пользователя и хост указаны правильно, стоит проверить информацию о хосте базы данных. Как правило, с WordPress в качестве хоста базы данных компании веб-хостинга используют localhost. В то время как компании управляемого WordPress хостинга могут использовать отдельные серверы.

В таком случае вам нужно будет связаться с вашей хостинговой компанией, чтобы узнать информацию о хосте вашей базы данных.

Обратите внимание, если вы недавно изменили хостинг-провайдера, обязательно дважды проверьте данные DB_HOST. В большинстве случаев localhost не меняется, но некоторые веб-хосты используют IP-адрес или другой URL.

Метод 2. Восстановление базы данных WordPress

Ваша база данных может быть повреждена, если на панели администратора WordPress отображается сообщение об ошибке вроде One or more database tables are unavailable. The database may need to be repaired (Одна или несколько таблиц недоступны. База данных должна быть восстановлена). Эта ошибка появится только на сервере, тогда как на сайте вы увидите сообщение error establishing a database connection.

К счастью, вы можете легко восстановить базу данных, вставив следующую функцию в файл wp-config.php:

define('WP_ALLOW_REPAIR', true);

Обязательно убедитесь, что вставили функцию перед разделом “That’s all, stop editing! Happy blogging.”

Вставка соответствующей функции в файл wp-config-php, чтобы исправить ошибку error establishing a database connection message

Сохранив изменения, перейдите на http://www.vashsite.com/wp-admin/maint/repair.php. Здесь у вас будет два варианта восстановления вашей базы данных.

Выберите необходимую вам опцию – Починить базу данных или Починить и оптимизировать базу данных.

После восстановления базы данных не забудьте вернуться к файлу wp-config.php и удалить функцию. Это очень важно, поскольку, если вы этого не сдеалете, любой сможет получить доступ к URL-адресу страницы восстановления БД без входа в систему.

Метод 3: Исправление повреждённые файлов

Ещё одна возможная причина появления сообщения Error Establishing a Database Connection – повреждённая тема или плагин.

Если вы недавно установили новую тему, причина может именно в ней. Чтобы проверить это, перейдите в Внешний вид -> Темы и попробуйте активировать любой другой из доступных там шаблонов.

Ещё один способ – отключить все плагины, а затем активировать их по очереди, чтобы найти виновника.

Если вы не можете зайти в панель управления WordPress, отключите тему или плагины, переименовав соответствующие папки в файловом менеджере панели управления хостингом.

Войдите в файловый менеджер и откройте папку wp_content, которая находится в каталоге public_html. Затем переименуйте текущую используемую тему или папку plugins. Это отключит вашу тему или все ваши плагины сразу.

Переименование папки Plugins

Помните, что не следует отключать темы и плагины WordPress одновременно, чтобы выяснить причину проблемы.

Например, сначала переименуйте папку plugins, а затем обновите сайт. Если ошибка исчезнет и вы сможете получить доступ к панели управления WordPress, значит, вы точно знаете, что проблема в одном из плагинов.

Но как узнать, какой именно плагин WordPress вызывает проблему?

Что ж, отключив их все, восстановите исходное имя папки plugins. Плагины WordPress по-прежнему будут неактивны, но теперь вы сможете изменять настройки в админке.

Список плагинов в консоли WordPress

После этого активируйте плагины WordPress один за другим, каждый раз перезагружая свой сайт. Продолжайте делать это до тех пор, пока не найдёте тот, который вызывает ошибку error establishing a database connection.

Совет: Не забудьте удалить тему или плагин, которые вызывают ошибку.

Если это не сработает, вы также можете попробовать повторно загрузить основные файлы WordPress. Для этого скачайте свежую версию WordPress и распакуйте архив на свой компьютер. Внутри папки удалите файл config.php и папку wp-content. После их удаления откройте FTP-клиент и загрузите оставшиеся файлы в папку root WordPress.

Таким образом, вы безопасно перезапишите все эти файлы на вашем реальном сервере.

Метод 4: Проверка сервера вашей базы данных

Если вы попробовали описанные выше методы, но WordPress по-прежнему не может установить соединение с базой данных, возможно, ваш сервер MySQL не работает.

Это может произойти по многим причинам, но одна из них связана с интенсивным трафиком на сервере. Это когда ваш хост-сервер не может обработать количество пользователей, пытающихся получить к нему доступ, что приводит к ошибке соединения.

Если причина в трафике, ваш сайт станет медленным и может выдать сообщение error establishing a database connection. Это обычно происходит, когда на серверах хостинг-провайдера есть ограничения. В таком случае обратитесь к своему провайдеру веб-хостинга и попросите его проверить, отвечает ли ваш сервер MySQL.

Если у вас более одного сайта, которые используют один и тот же сервер, проверьте работает ли ваш SQL-сервер и на них.

Пользователям, у которых только один сайт, рекомендуется перейти в панель управления хостингом, войти в phpMyAdmin и подключиться к базе данных.

Меню phpMyAdmin в hPanel

Если вам удастся установить соединение, проверьте, есть ли у вашего пользователя БД WordPress необходимые права.

Создайте новый файл с именем testconnection.php (или любым другим, которое вы можете запомнить с расширением .php) и вставьте в него этот код:

<?php 
$link = mysqli_connect('localhost', 'пользователь', 'пароль'); 
if (!$link) { 
die('Could not connect: ' . mysqli_error()); 
} 
echo 'Connected successfully'; 
mysqli_close($link); 
?>

Обязательно замените имя пользователя и пароль своей информацией. Затем загрузите этот файл на сайт и попробуйте зайти на него в браузере.

Если соединение с базой данных будет успешно установленно, это означает, что у вашего пользователя достаточно прав, и что причина ошибки error establishing a database connection в чём-то другом.

Если ваш веб-сайт размещён на общем сервере, а трафик продолжает расти, нагрузка на сервер будет тоже увеличиваться, что может вызвать проблему соединения с базой данных. Плагины кеширования, такие как W3 Total Cache, WP Rocket или WP Super Cache – хорошие инструменты, которые помогут предотвратить дальнейшие проблемы.

Метод 5: Создание новой базы данных

Если ни один из вышеперечисленных методов не помог, значит ваша база данных может быть полностью повреждена и не подлежит восстановлению.

В таком случае вам необходимо создать новую базу данных MySQL и пользователя. Для этого перейдите на страницу Базы данных MySQL и заполните форму вверху.

Форма создания базы данных MySQL в hPanel

Создав новую базу данных MySQL, импортируйте (англ.) резервную копию БД, чтобы не делать всё с нуля.

Дополнительные методы 

Если ни один из перечисленных выше методов не помог, вот ещё несколько бонусных советов, которые сработали для других пользователей.

  1. Обновите WordPress. Перейдите в свою панель управления, затем в phpMyAdmin > База данных WordPress. Щелкните по SQL в верхнем меню и вставьте следующий код:
    UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'
  2. Попросите помочь вам. Нет ничего плохого в том, чтобы попросить о помощи. Обратитесь в свою хостинговую компанию или в службу поддержки клиентов. Они, наверняка, помогут устранить проблему с подключением, приняв необходимые меры за вас или показав, как это сделать.
  3. Перезагрузите сервер. Пользователи выделенных серверов, локальных серверов и VPS (виртуальных частных серверов) также могут попытаться перезагрузить свои серверы. При перезапуске веб-сервера и сервера базы данных некоторые ошибки могут просто исчезнуть.
  4. Восстановите последнюю резервную копию. Это следует делать только в том случае, если вы не боитесь потерять данные, которые были добавлены после последнего резервного копирования. Проверьте, есть ли у вашего хостинга функция автоматического создания бэкапов, чтобы узнать, когда была создана последняя резервная копия. Возможно, вам придётся восстановить как вашу базу данных, так и ваши файлы.

Возможные причины ошибки

Есть несколько причин, по которым на сайте WordPress может появится сообщение «Error Establishing a Database Connection»:

  • Неверные данные для подключения к базе данных. Если были внесены какие-либо изминения в учётные данные для подключения к БД, изменилось имя пользователя или пароль, старые данные, хранящиеся в ваших файлах WordPress, будут недействительными.
  • Повреждённая база данных. Может быть результатом попытки взлома, сбоя в работе плагина или установки несовместимой темы.
  • Всплеск трафика. Внезапный рост спроса может привести к тому, что ваша база данных перестанет отвечать из-за слишком большой нагрузки на сервер.
  • Нерабочий сервер базы данных. Иногда сервер, на котором хранятся файлы вашего сайта, может не работать по какой-либо причине.

Прежде чем предпринимать какие-либо действия по устранению ошибки, проверьте, отображается ли сообщение error establishing a database connection и в панели администратора WordPress.

Вот как может выглядеть ваша админка WordPress:

Сообщение error establishing a database connection в админке WordPress

Если вы видите такое сообщение, значит проблема в неверных учётных данных для входа. Однако, если появляется другое сообщение об ошибке, причиной может быть повреждённая база данных или всплеск трафика.

Заключение

Сообщение об ошибке “Error Establishing a Database Connection” на вашем сайте WordPress может изрядно подпортить настроение. Сайт не загружается, а значит есть риск потерять трафик и клиентов.

Ошибка возникает, когда вашему сайту не удаётся получить информацию из базы данных. Это может быть вызвано рядом причин, таких как неправильные учётные данные для входа в файле wp-config.php, конфликты темы или плагина WordPress, всплеск трафика.

Эти три метода должны помочь устранить проблему:

  • Исправление неправильных учётных данных. Убедитесь, что учётные данные в вашем файле wp-config.php совпадают с данными в базе данных MySQL.
  • Ремонт базы данных. Если ваша база данных повреждена, восстановите её, вставив функцию define(‘WP_ALLOW_REPAIR’, true); в файл wp-config.php.
  • Исправление повреждённых файлов. Деактивируйте тему или плагин через панель управления WordPress или переименуйте папки с панели управления хостингом.
  • Создание новой БД. Создайте новую базу данных MySQL и импортируйте резервную копию.

Оказывается, ошибка подключения к базе данных в WordPress не так и страшна. Просто следуйте инструкциям, и ваш сайт заработает в кратчайшие сроки!

Author

Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.

Понравилась статья? Поделить с друзьями:
  • Docker service job for docker service failed because the control process exited with error code
  • Docker run npm install error
  • Docker php fpm error log
  • Docker msbuild error msb1009 project file does not exist
  • Docker mosquito error address not available