Вопрос по linux, mysql, php, lamp – PHP - Ошибка доступа к MySQL - Работает в других программах

1
Access denied for user 'root '@'localhost' (using password: YES)

Да, эта ошибка слишком распространена, и я потратил много времени на ее изучение. Однако ничто не решило проблему.

Я получаю эту ошибку при попытке первого подключения в одном из моих сценариев PHP, которые я разрабатываю. Если это поможет узнать, я запускаю Linux Mint с конфигурацией LAMP, подробно описанной вhttp://community.linuxmint.com/tutorial/view/486 установлены.

Дело в том, что любое другое приложение работает с подключением. Оба входа в PhpMyAdmin как root или mysql клиент на консоли как root работают отлично. Сам сайт MySQL говорит, что это, скорее всего, проблема с моим кодом, но мне еще предстоит выяснить это ... Я немного новичок в этом, поэтому, пожалуйста, прости меня, если это очень грубая ошибка.

Я использую внешнюю функцию на другой странице (импортируется с помощью require_once). Это плохая практика? В любом случае, вот оно:

global $sql_conn, $sql_addr, $sql_user, $sql_pass, $sql_datb;

$config=app_readconfig();
echo "<p>".$sql_addr." ".$sql_user." ".$sql_pass." ".$sql_datb."</p>";//DEBUG, shows values are read
if($config==FALSE)
{
    echo "<p>Error: Missing values in darkace_config.txt!</p>";
    return FALSE;
}
$sql_conn=mysql_connect($sql_addr,$sql_user,$sql_pass);
if(!$sql_conn)
{
    echo "<p>MYSQL Error: ".mysql_error()."</p>";
    return FALSE;
}

if(!mysql_select_db($sql_datb,$sql_conn))
{
    echo "<p>MYSQL Error selecting database: ".mysql_error()."</p>";
    return FALSE;
}
return TRUE;

Эта функция вызывается, и сообщение, которое я возвращаю, имеет вид:     Ошибка MYSQL: доступ запрещен для пользователя "root" a "; localhost" apos; (используя пароль: ДА)

Опять же, используя тот же пароль на PhpMyAdmin или терминале, я могу подключиться и работать просто хорошо. Jake
хорошо MySQLvery suer Вы не используете правильный пароль. user557846
MySQL собирается быть правым, здесь не вы, поэтому сбросьте пароль к чему-то простому, а затем попробуйте снова. user557846
Я уверен, что использую тот же пароль, что и для подключения через консоль или PhpMyAdmin. Я новичок в PHP, Apache и Linux, но раньше немного работал с SQL. Однако я не считаю это опытом. Jake
Если вы разрабатываете новое приложение, я предлагаю использовать PDO или mysqli, mysql_ * устарел. Хотя, вероятно, проблема не в этом. Вы уверены, что пароль правильный? John V.

Ваш Ответ

3   ответа
2

как имя пользователя. Попробуйте & quot; root & apos; без места?

Я попробовал это еще в эпоху задаваемого вопроса. Я попытался удалить пробел, не было места для удаления в файле конфигурации. Тогда я сдался и решил отложить чтение файла конфигурации, пока я не закончу приложение. Я только сейчас узнал, что там есть CRLF или что-то еще. отделка () исправила это, таким образом, я предполагаю, что это был самый точный ответ. Спасибо. Jake
1

Что-то не так с вашимcredentials.

Проверьте:

  • Username
  • Password
  • Host

Также, пожалуйста, прекратите использованиеmysql_* функции как они естьсейчас устарела, использованиеMySQLi или жеPDO вместо.

Я проверял учетные данные много раз ... однако я переключу функции mysql_ * и посмотрю, как они работают. Jake
Используйте учетные данныеexactly как и в PHP Не вводите их по памяти, сами.
0

$link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');

не включайте http, добавьте номер порта, как в примере, проверьте имя пользователя и пароль.

Если вас это раздражает, но каждый раз, когда вы используете функцию mysql_ *, вы получите рекомендацию PDO. Я также рекомендую PDO, PHP также рекомендует PDO, вы можете проверитьДокументация PHP для mysql_connect

Похожие вопросы