Вопрос или проблема
У меня есть контейнер podman с mediawiki и установленный natively mariadb. На данный момент он работает, и я могу получить доступ к веб-интерфейсу.
Но когда я пытаюсь подключиться к базе данных на этапе настройки, я получаю
Не могу получить доступ к базе данных: :real_connect(): (HY000/1045): Доступ запрещен для пользователя 'mediawikidbuser'@'mediawiki' (с использованием пароля: ДА)
Теперь “веселая” часть в том, что я могу подключиться к базе данных изнутри контейнера. Для отладки я установил mariadb внутри контейнера. Оттуда я подключился к базе данных снаружи, и все работает безупречно. Я могу создавать таблицы, вставлять данные и снова их читать.
В кратце: я могу подключиться к базе данных изнутри контейнера, но mediawiki не может.
Я пробовал оба варианта: IP и имя хоста. Ошибка та же.
Альтернативным решением было бы использовать postgresql, который лучше во всех отношениях. Но я не смог заставить это работать. По умолчанию контейнер mediawiki не предлагает postgresql, и скрипты для ручной подготовки базы данных не запускаются внутри контейнера (даже с доработками). Документация говорит, что mediawiki должна быть скомпилирована (?) с опцией postgres.
Ответ или решение
Чтобы решить проблему с подключением MediaWiki к MariaDB в Podman-контейнере, нужно рассмотреть несколько аспектов. Вы уже смогли установить соединение с базой данных и создать таблицы из контейнера, что указывает на правильность конфигурации MariaDB. Однако, ошибка, которую вы получаете, говорит о проблемах с аутентификацией при подключении MediaWiki.
Вот несколько шагов, чтобы устранить проблему:
-
Проверка учетных данных:
Убедитесь, что вы правильно указали имя пользователя, пароль и название базы данных в настройках MediaWiki. ОткройтеLocalSettings.php
(или выполните настройки через интерфейс) и проверьте, что параметры соответствуют следующим:$wgDBuser = 'mediawikidbuser'; $wgDBpassword = 'ваш_пароль'; $wgDBname = 'ваша_база_данных';
-
Проверка привилегий пользователя:
Убедитесь, что у пользователяmediawikidbuser
есть все необходимые привилегии для подключения к базе данных с IP-адреса или имени хоста контейнера MediaWiki. Выполните следующие команды в MariaDB:GRANT ALL PRIVILEGES ON ваша_база_данных.* TO 'mediawikidbuser'@'%' IDENTIFIED BY 'ваш_пароль'; FLUSH PRIVILEGES;
Знак ‘%’ позволяет подключение от любого IP-адреса. Если вы хотите ограничить доступ только контейнером MediaWiki, вы можете указать конкретный IP-адрес или имя контейнера.
-
Настройка хоста:
Убедитесь, что MediaWiki может правильно разрешить имя хоста MariaDB. Если у вас возникают проблемы с использованием имени хоста, попробуйте указать IP-адрес MariaDB напрямую в настройках MediaWiki. -
Проверка конфигурации сети:
Если вы используете отдельную сеть для контейнеров Podman, убедитесь, что контейнер MediaWiki может взаимодействовать с MariaDB в этой сети. Вы можете проверить сетевые настройки с помощью команды:podman network inspect <название_сети>
Убедитесь, что оба контейнера находятся в одной сети и обмен данными не блокируется правилами брандмауэра.
-
Логи MediaWiki:
Посмотрите логи MediaWiki, чтобы получить более детальную информацию об ошибках подключения. Это может дать полезные подсказки для диагностики проблемы. -
Использование PostgreSQL:
Если вы решите использовать PostgreSQL, то вам действительно потребуется сборка MediaWiki с поддержкой PostgreSQL. Это можно сделать, следуя официальной документации MediaWiki, или искать готовые Docker-имиджи, которые включают PostgreSQL. -
Перезапуск сервисов:
Наконец, после внесения любых изменений в настройки базы данных или конфигурацию MediaWiki, обязательно перезапустите контейнер MediaWiki, чтобы применить новые настройки.
Если после выполнения всех этих шагов проблема не решается, рассмотрите возможность обращения в сообщество поддержки MediaWiki или баз данных, предоставляя им подробную информацию о вашей конфигурации и том, что вы уже попробовали.