Быстрый вход в phpMyAdmin без пароля на локальных или dev сборках

Автоматизируем ввод пароля в phpmyadmin чтобы не заморачиваться на локальной сборке проекта с вводом паролей.

Для этого, во первых root юзеру надо его сбросить:

UPDATE mysql.user SET Password='', authentication_string = '', plugin = 'mysql_native_password' WHERE User = 'root' AND Host = '%'; FLUSH PRIVILEGES;

А далее в config.inc.php добавляем свою логику:

$cfg['Servers'][$i]['AllowNoPassword'] = isset($_SERVER['HTTP_X_DB_PASS']) && getenv('DB_PASSWORD') == $_SERVER['HTTP_X_DB_PASS'] ? true : false;

register_shutdown_function(function ($AllowNoPassword) {
    $out = ob_get_contents();
    if (stripos($out, 'name="pma_password" id="input_password"') === false || !$AllowNoPassword) return;
    ob_clean();
    $out = str_replace('name="pma_username" id="input_username" value=""', 'name="pma_username" id="input_username" value="root"', $out);
    $pos = strrpos($out, '</form>');
    if($pos !== false) {
        $out = substr_replace($out, '</form><script>input_go.click();</script>', $pos, strlen('</form>'));
    }
    echo $out;
}, $cfg['Servers'][$i]['AllowNoPassword']);

В данном случае у меня хостовый nginx задает заголовок из .env.dev с паролем proxy_set_header X-Db-Pass «12345»;

этот же пароль у меня есть в приложении, через getenv получаем, сравниваем их, если удачно — добавляем полезную нагрузку и входим автоматом.

Так же на хостовом nginx настроена автоматическая авторизация по http, аля
proxy_set_header Authorization «Basic fghdfgfgdfgfgfgdf»;
которая в докер nginx нас сразу авторизует без заморочек.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *