[Обновлено ниже]
У меня возникла проблема с подключением к базе данных MySQL с использованием стека LAMP от Bitnami. Это код, который я использовал для подключения на сервере с общим хостингом, где я первоначально размещал базу данных:
DEFINE ('DB_USER', 'username'); DEFINE ('DB_PASSWORD', 'password'); DEFINE ('DB_HOST', 'localhost'); DEFINE ('DB_NAME', 'database'); if ($dbc = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD)) { // Make the connnection. if (!mysql_select_db (DB_NAME)) { // If it can't select the database. // Handle the error. trigger_error("Could not select the database!\n<br />MySQL Error: " . mysql_error()); exit(); } // End of mysql_select_db IF. } else { // If it couldn't connect to MySQL. trigger_error("Could not connect to MySQL!\n<br />MySQL Error: " . mysql_error()); exit(); } // End of $dbc IF.
Запустив это на моем сервере Bitnami, я не получаю ответа (даже сообщение об ошибке). (PHP работает нормально.)
Я тогда попытался
<?php $link = mysql_connect('localhost', 'username', 'password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?>
и получил
Could not connect: Access denied for user 'username'@'localhost' (using password: YES)
эта комбинация имени пользователя и пароля определенно существует и (насколько я могу судить) имеет доступ к соответствующей базе данных. Мне интересно, что я делаю неправильно, и почему исходный скрипт не создает ошибку (или подключается).
Обновить:
Я последовал предложению Майкла ниже и смог подключиться. Я хотел воспроизвести проблему, поэтому я удалил этого пользователя, а затем создал пользовательский тестостерон через
CREATE USER 'testuser'@'%' IDENTIFIED BY '***'; GRANT SELECT , INSERT , UPDATE , DELETE , FILE ON * . * TO 'testuser'@'%' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Затем, следуя предложению Майкла, я казнил
GRANT ALL PRIVILEGES ON test . * TO testuser@localhost IDENTIFIED BY 'password'
но я снова получаю
Could not connect: Access denied for user 'testuser'@'localhost' (using password: YES)
(Это не работает, если я использую «%» или «localhost»)
это то, что привилегии выглядят для testuser в phpmyadmin
Database Privileges Grant Table-specific privileges test ALL PRIVILEGES No No Edit Privileges