وردبرس لا يتصل بقاعدة البيانات

السلام عليكم، قمت بتثبيت نظام Wordpress على شكل حاوية منفصلة عن قواعد البيانات MariaDB والتي هي عبارة عن حاوية أخرى مستقلة.

هذا ملف docker-compose الخاص بـ MariaDB

version: "3"
services:
  mariadb:
    image: mariadb
    container_name: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - "127.0.0.1:3306:3306"
    restart: unless-stopped
    networks:
      - web

networks:
  web:
    external: true

وهذا ملف وردبرس:

version: '3'

services:
  # Wordpress
  myWordpress:
    image: wordpress:php8.1
    container_name: myWordpress
    hostname: myWordpress
    restart: unless-stopped
    volumes: [ './data:/var/www/html' ]
    environment:
      - WORDPRESS_DB_HOST=mariadb
      - WORDPRESS_DB_USER="${WORDPRESS_DB_USER}"
      - WORDPRESS_DB_PASSWORD="${WORDPRESS_DB_PASSWORD}"
      - WORDPRESS_DB_NAME="${WORDPRESS_DB_NAME}"
    networks:
      - web
networks:
  web:
    external: true

قمت مسبقا بإنشاء الشبكة web ، كما قمت بإنشاء قاعدة بيانات ومستخدم جديد خاص بالوردبرس ، وأعطيته الصلاحيات اللازمة عن طريق الأمر

GRANT ALL PRIVILEGES ON wp_db.* TO 'wp_user'@'%';

ثم قمت باستخدام طرفية MariaDB للتأكد من صحة البيانات.

docker exec -it mariadb bash
mysql -u wp_user -pMyPassword
# Welcome to the MariaDB monitor.  Commands end with ; or \g.
# ...

لكن عند زيارة الموقع ، يظهر هذا الخطأ:

Warning: mysqli_real_connect(): (HY000/1045): Access denied for user '"wp_user"'@'172.16.32.5' (using password: YES) in /var/www/html/wp-includes/wp-db.php on line 1753
Access denied for user '"wp_user"'@'172.16.32.5' (using password: YES)

لدي شعور بأن المشكلة تكمن في الجزء الخاص باسم المضيف الخاص بقواعد البيانات (داخل ملف docker-compose الخاص بوردبرس) ، فأنا أستخدم mariadb ، لكن أيضا جربت استخدام localhost بما أن الحاويتين تشتركان في نفس الشبكة web لكن هذا لم يعمل أيضا، وتظهر نفس رسالة الخطأ!


قمت بطرح السؤال على stackoverflow
إعجاب واحد (1)

عزيزي أنا أفضل العمل عن طريق المستخدم الجذر (root) وكلمة المرور الخاصة به وهي (MYSQL_ROOT_PASSWORD) كبداية وعندما يستقر لك الأمر يمكنك تحسين الحماية لاحقا.

احذف علامات الاقتباس من متغييرات البيئة.
لا حاجة لها.

أيضا أنشئ شبكة منفصلة لقاعدة البيانات, لا تجعل Web لخادم الويب و قاعدة البيانات أيضا.

إعجاب واحد (1)

شكرا ، اتضح أن المشكلة كانت في طريقة كتابة المتغيرات، فأنا كنت أكتبها بدون علامات تنصيص ، لكن عندما شملت اسم المتغير مع القيمة من البيئة داخل علامات تنصيص واحدة ، تم حل المشكلة.