Подтвердить что ты не робот

Ошибка MySQL # 1133 - Невозможно найти соответствующую строку в таблице пользователя

Невозможно установить пароль для пользователя с помощью 3.5.2.2 - phpMyAdmin для 5.5.27 - MySQL. При попытке установить пароль при входе в систему phpMyAdmin в качестве пользователя он выдает следующую ошибку:

#1133 - Can't find any matching row in the user table

При входе в систему с правами пользователя root появляется сообщение об успешном завершении пароля.

SET PASSWORD FOR 'user'@'%' = PASSWORD( '***' )

В любом случае пароль не устанавливается и остается таким, как он в настоящее время, пустым.

4b9b3361

Ответ 1

Оказывается, ошибка очень неопределенная!

1) Пароль был установлен во время входа в систему с правами администратора, так как он обновлял поле пользователя/пароля в таблице пользователей в разделе MySql.

2) При регистрации в качестве пользователя пароль фактически не менялся, и хотя в таблице пользователей в MySql был указан один из них, файл config.inc.php допускал аутентификацию без пароля.

Решение:

Измените следующее значение false в config.inc.php.

$cfg['Servers'][$i]['AllowNoPassword'] = true;

Чтобы он читал

$cfg['Servers'][$i]['AllowNoPassword'] = false;

Изменить пользователя хоста от Any или % до localhost в таблице пользователей MySql. Это может быть легко достигнуто с помощью консоли phpMyAdmin.

Эти два изменения позволили мне аутентифицироваться как пользователь с его паролем и запрещенной аутентификацией без пароля.

Он также позволяет пользователю изменять свой пароль при входе в систему как пользователь.

Кажется, все разрешения и остальные были исправлены с этими двумя изменениями.

Ответ 2

Я столкнулся с этой ошибкой, используя MySQL в другом контексте (не в phpMyAdmin). Команды GRANT и SET PASSWORD не удалось выполнить для определенного существующего пользователя, который был указан в таблице mysql.user. В моем случае это было исправлено, запустив

FLUSH PRIVILEGES;

документация для этой команды говорит

Перезагружает привилегии из таблиц грантов в базе данных mysql.

Сервер кэширует информацию в памяти в результате операторов GRANT и CREATE USER. Эта память не освобождается соответствующими инструкциями REVOKE и DROP USER, поэтому для сервер, который выполняет множество экземпляров операторов, вызывающих кеширование, будет увеличение использования памяти. Эта кэшированная память может быть освобождена с помощью приложений FLUSH PRIVILEGES.

Очевидно, кэш пользовательской таблицы достиг несогласованного состояния, вызывая это странное сообщение об ошибке. Более подробная информация доступна здесь.

Ответ 3

Я столкнулся с этой проблемой, но в моем случае пароль для пользователя "phpmyadmin" не соответствовал содержимому /etc/phpmyadmin/config-db.php

Как только я обновил пароль для пользователя phpmyadmin, ошибка исчезла.

Это шаги, которые я сделал:

  • Войдите в mysql как root: mysql -uroot -pYOUR_ROOT_PASS
  • Перейдите в 'mysql' db: use mysql;
  • Обновите пароль для пользователя phpmyadmin: UPDATE mysql.user SET Password=PASSWORD('YOUR_PASS_HERE') WHERE User='phpmyadmin' AND Host='localhost';
  • Скрытые привилегии: FLUSH PRIVILEGES;

ГОТОВО!! Это сработало для меня.

Ответ 4

Если вы используете PHPMyAdmin, вы должны войти в систему под учетной записью root, чтобы иметь возможность изменять пароль root. в user root, чем оставить пароль пустым, чем изменить свой пароль.

Ответ 5

предоставить все на newdb. * для newuser @localhost, идентифицированный паролем;

Ответ 6

Эта ошибка может возникнуть при попытке предоставить привилегии для не существующего пользователя.

Мне непонятно, что MySQL считает не существующим пользователем. Но я подозреваю, что MySQL считает, что пользователь существует, если его можно найти по имени (столбец User) и хост (столбец Host) в таблице User.

При попытке предоставить привилегии пользователю, который может быть найден с его именем (столбец User), но не его именем и хостом (столбцы User и Host), и не предоставлять пароль, возникает ошибка.

Например, следующий оператор вызывает ошибку:

grant all privileges on mydb.* to [email protected]'xxx.xxx.xxx.xxx';

Это связано с тем, что пароль не указан, MySQL не может создать нового пользователя и, таким образом, пытается найти существующего пользователя. Но ни один пользователь с именем myuser и хостом xxx.xxx.xxx.xxx не может быть найден в таблице User.

В то время как предоставление пароля позволяет успешно выполнить оператор:

grant all privileges on mydb.* to [email protected]'xxx.xxx.xxx.xxx' identified by 'mypassword';

Не забудьте повторно использовать тот же пароль, который вы считаете существующим, если этот новый "пользователь MySQL" является тем же "пользователем приложения".

Завершите операцию, сбросив привилегии:

flush privileges;

Ответ 7

В моем случае я только что переименовал пользователя Mysql, который собирался сменить свой пароль на db-инструменте на основе gui (DbVisualizer). Терминал, в котором я пытался установить "ПАРОЛЬ", не работал (ошибка MySQL № 1133).

Однако этот ответ работал на меня, даже после смены пароля команда "SET PASSWORD" еще не работала.

После закрытия терминала и открытия нового команда работала очень хорошо.