Ошибка 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( '***' )
В любом случае пароль не устанавливается и остается таким, как он в настоящее время, пустым.
Ответы
Ответ 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" еще не работала.
После закрытия терминала и открытия нового команда работала очень хорошо.