MySQL — доступ запрещен, пока я не подключусь через Workbench или CLI

У меня проблемы с перебоями в подключении с моего PHP-сайта localhost к моей MySQL DB localhost. Это возвращает меня Access Denied for 'user'@'localhost' (using password: YES) как это характерно для неправильного пароля. Я проверил, чтобы убедиться, что это ничего особенного, и я мог получить это с rootЯ так растерялся. Я даже создал 127.0.0.1, localhost и % аккаунт с тем же именем пользователя и паролем. Никто из них не работал, но root работал просто отлично. Это была моя самая большая путаница — «root» работает без проблем, но этот новый пользователь вообще не работает.

Я просмотрел очень много проблем (см. Ниже) и вопросов, изложенных на SE и других форумах, связанных с Error 1045, Access Denied и все варианты, и большинство сводится к опечатке или опечатке, или что-то в этом роде. Я скопировал и вставил каждую соответствующую строку вокруг всего моего кода, так что это не проблема. У меня нет анонимного пользователя, так что это не проблема. Там нет проблем с DNS, это локальный хост, и я пробовал каждую итерацию этого.

Проблема заключается в том, что решает проблему для меня. Если я открываю соединение с БД с использованием новой учетной записи через MySQL Workbench или CLI, внезапно веб-страница будет работать без проблем, подключаясь через новую учетную запись без проблем. Но если я запускаю сценарий, который вообще меняет информацию о новой учетной записи, даже если я ничего не меняю, и перезагружаю страницу, он снова будет запрещать доступ, пока я снова не открою это соединение через MySQL Workbench или CLI.

Это работает в обязательном порядке, каждый раз. Я понятия не имею, что происходит — нужно ли войти в учетную запись через CLI или Workbench, прежде чем их можно будет использовать через PHP? Или что-то еще мне здесь не хватает?

Код PHP

$servername='localhost';
$username='website';
$password='password';
$database='db_1';

$conn=new mysqli($servername, $username, $password, $database);
if($conn->connect_error) die("connection failed");

Создание учетных данных MySQL

create user website@'localhost' identified by 'password';
grant SELECT, INSERT, DELETE on db_1.* to 'website'@'localhost';

Несколько вопросов SO, которые не помогли:
MySQL — доступ запрещен для пользователя
доступ пользователя @ ‘localhost’ к базе данных » запрещен
"Ошибка подключения: доступ запрещен для пользователя ‘root’ @ ‘localhost’ (используется пароль: ДА)" из функции PHP

РЕДАКТИРОВАТЬ 1:
Я использую стек WAMP на локальном компьютере. У меня открыт брандмауэр для порта 3306 (порт MySQL прослушивает). Я не использую CPanel (я думаю, это так и называется). И я только что проверил, и это не работает с root либо до тех пор, пока я не продолжу и не воссоздаю новое соединение с БД через CLI или Workbench.

Ошибка, которую он возвращает, также включает это, но у меня никогда не было этого, поскольку я никогда не пытался установить OpenSSL ни на одном из предыдущих: mysqli::__construct(): PHP was built without openssl extension, can't send password encrypted in [file], Но это исчезает, как только я устанавливаю соединение через CLI (без каких-либо необычных тегов или чего-то еще, поэтому я не думаю, что я использую SSL) или через Workbench.

Изменить 2: Кроличья нора углубилась, а затем остановилась, но я все еще не понимаю, как правильно настроить мою установку, чтобы избежать ее в будущем / исправить, чтобы она была более безопасной. Решение (которое я не могу представить как свое собственное, поэтому, если один из вас захочет объяснить, а затем заявить об этом, пойти на это — я приму это), состояло в том, чтобы вернуться на мой сервер MySQL и перенастроить Authentication Method не использовать Strong Password Encryption и вместо этого выбрать Legacy Authentication Method, Если бы кто-то мог объяснить, как сделать мой PHP совместимым с более новым методом аутентификации (я еще не смотрел, но буду после того, как я опубликую это), я был бы благодарен.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]