Я знаю, что многие темы уже задают этот вопрос, но я занимался этим часами и остался в тупике. Я пытаюсь подключиться к базе данных MySQL, на которой работает мой MacBook со следующим PHP:
<?php
DEFINE('DB_USER', 'webuser');
DEFINE('DB_PASSWORD', 'thispassword');
DEFINE('DB_HOST', '127.0.0.1:3306');
DEFINE('DB_NAME', 'learning_accounts');
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die('Error connecting: ' .
mysqli_connect_error()
);
?>
Это возвращает следующую ошибку:
Error connecting: Access denied for user 'webuser'@'localhost' (using password: YES)
Я могу нормально подключиться через терминал, даже пытаясь соединиться с PHP и root не работает. Я новичок как в PHP, так и в MySQL, поэтому любые рекомендации и понимание будут оценены!
Я испробовал множество решений, таких как предоставление привилегий, удаление привилегий, создание новых пользователей, использование PDO, ничего не помогло — пожалуйста, помогите!
Большое спасибо, я ненавижу изучать новые языки, потому что вначале я потерянная рыба, когда дело доходит до отладки!
Обновить
У меня установлен пароль для моей учетной записи root, но изменение переменной DB_PASSWORD на » приводит к изменению ошибки на: Ошибка подключения: Неизвестная база данных ‘learning_accounts’
Обновление 2
Я исправил проблему, проверьте мой ответ, чтобы увидеть, как, если у вас возникла эта проблема, то я надеюсь, что вы быстро нашли эту ветку!
Возможно, у вас есть анонимный пользователь » @ ‘localhost’ или » @ ‘127.0.0.1’
Если вы пытались получить привилегии и т. д. множество решений, вы можете создать другую учетную запись и попробовать ее.
Если возникает такая же проблема, то это проблема сервиса / демона mysql.
У меня такой же опыт раньше времени.
Так что в то время я переустановил сервер MySQL, и проблема была исправлена.
Попробуйте изменить «DB_HOST» на «localhost».
Если это не решило проблему, переустановите сервер MySQL
Как @DontPanic предложил в своем комментарии избавиться от 3306
от 127.0.0.1:3306
,
Если вы используете XAMPP, WAMP или EasyPHP, пароль MySQL не устанавливается по умолчанию. Следовательно, вы должны использовать
DEFINE('DB_USER', 'root'); // default user name
DEFINE('DB_PASSWORD', ''); // empty password just open single quote and close
Если вы работаете на локальном сервере, нет необходимости запрашивать пароль, просто сделайте его «пустым».
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'learning_accounts');
$conn = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
if (!$link) {
die("Database connection failed: " . mysqli_error());
}
Если вы работаете на сервере, просто измените DB_USER
, DB_PASSWORD
а также DB_NAME
,
Если по-прежнему не удается подключиться, проверьте правильность имени базы данных или нет.
Если все идеально, вы должны проверить ссылку ниже
Итак, я наконец понял это. Проблема заключалась в том, что я установил php отдельно и создал свою базу данных, затем установил XAMPP и попытался подключиться к этой базе данных. Надлежащим способом является создание базы данных с использованием php my admin, которая поставляется с XAMPP и имеет собственные php, mysql и apache, которые вы должны использовать, чтобы все работало.
Я надеюсь, что кто-то еще, у кого есть эта проблема, найдет эту нить, поскольку это были несколько дней ада, будучи шарами в файлах конфигурации — но этого можно было легко избежать, если бы я знал, что я делал.