MySQL 오류 #1133 - 사용자 테이블에서 일치하는 행을 찾을 수 없습니다.
3.5.2.2 - phpMyAdmin for 5.5.27 - MySQL을 사용하여 사용자의 암호를 설정할 수 없습니다.로그인 시 패스워드를 설정하려고 할 때phpMyAdmin
유저로서 다음의 에러가 표시됩니다.
#1133 - Can't find any matching row in the user table
루트로 로그온하면 다음 비밀번호 설정이 정상적으로 완료되었다는 메시지가 나타납니다.
SET PASSWORD FOR 'user'@'%' = PASSWORD( '***' )
어느 경우든 비밀번호는 설정되지 않고 현재 상태로 공백으로 유지됩니다.
MySQL을 다른 컨텍스트(phpMyAdmin 내가 아님)에서 사용할 때 이 오류가 발생했습니다.mysql.user 테이블에 나열된 특정 기존 사용자에 대해 GRANT 및 SET PASSWORD 명령이 실패했습니다.저 같은 경우에는 달리기로 고쳤습니다.
FLUSH PRIVILEGES;
이 명령어 매뉴얼에는 다음과 같이 기술되어 있습니다.
mysql 데이터베이스의 인가 테이블에서 권한을 새로고침합니다.
서버는 GRANT 및 CREATE USER 문의 결과로 정보를 메모리에 캐시합니다.이 메모리는 대응하는 REVOKE 및 DROP USER 문에서는 해방되지 않기 때문에 캐시를 일으키는 문의 많은 인스턴스를 실행하는 서버에서는 메모리 사용량이 증가합니다.이 캐시된 메모리는 FLUSH PRIVALYS로 해방할 수 있습니다.
사용자 테이블 캐시가 부정합 상태에 이르렀기 때문에 이 이상한 에러 메세지가 발생하고 있는 것 같습니다.자세한 내용은 이쪽에서 확인하실 수 있습니다.
이 오류는 존재하지 않는 사용자에게 권한을 부여하려고 할 때 발생할 수 있습니다.
MySQL이 존재하지 않는 사용자로 간주하는 것은 명확하지 않습니다., 가 이름(컬럼 「MySQL」)으로될 수 있는 는, 됩니다.User
)Host
에 기재되어 있습니다.user
table.syslog를 클릭합니다.
수 하려고 할 (컬럼은 " " " " " " " " " )User
으로는 안 됩니다.User
★★★★★★★★★★★★★★★★★」Host
비밀번호를 입력하지 않으면 에러가 발생합니다.
예를 들어, 다음 문장은 오류를 트리거합니다.
grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx';
이는 패스워드를 지정하지 않으면 MySQL이 새 사용자를 생성할 수 없기 때문에 기존 사용자를 찾으려 하기 때문입니다.그러나 이름을 가진 사용자는 없습니다.myuser
호스트 " " " "xxx.xxx.xxx.xxx
.user
table.syslog를 클릭합니다.
는 패스워드를 제공하는 한편, 스테이트먼트를 정상적으로 실행할 수 있도록 합니다.
grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx' identified by 'mypassword';
새 "MySQL 사용자"가 동일한 "응용 프로그램 사용자"인 경우, 존재하는 것으로 간주되는 사용자의 암호를 다시 사용해야 합니다.
권한을 플러시하여 작업을 완료합니다.
flush privileges;
만, 제 가 'phpmyadmin'의 하지 않았습니다./etc/phpmyadmin/config-db.php
'phpmyadmin' 사용자의 비밀번호를 업데이트하면 오류가 사라집니다.
다음은 제가 수행한 단계입니다.
- mysql」)로합니다.
mysql -uroot -pYOUR_ROOT_PASS
- db: 'mysql' db로 합니다.
use mysql;
- 합니다. 'phpmyadmin'은 비밀번호를 갱신합니다.
UPDATE mysql.user SET Password=PASSWORD('YOUR_PASS_HERE') WHERE User='phpmyadmin' AND Host='localhost';
- 특권: " " " " :
FLUSH PRIVILEGES;
됐다!! 됐다!
알고 보니, 오류는 정말 모호해요!
1) MySql의 사용자 테이블에서 사용자/패스워드 필드를 갱신하고 있을 때 root로 로그온한 상태에서 패스워드가 설정되었습니다.
2) 사용자로 로그온 했을 때 패스워드는 실제로 변경되지 않았으며 MySql의 사용자 테이블에 패스워드가 지정되어 있어도 config.inc.php 파일은 패스워드 없이 인증할 수 있었습니다.
솔루션:
다음 값을 config.inc.php로 변경합니다.
$cfg['Servers'][$i]['AllowNoPassword'] = true;
이렇게 써있도록
$cfg['Servers'][$i]['AllowNoPassword'] = false;
MySql 사용자 테이블에서 사용자의 호스트를 에서 로 변경합니다.이는 phpMyAdmin 콘솔을 통해 쉽게 달성할 수 있습니다.
이 두 가지 변경에 의해 패스워드를 사용하여 사용자로 인증할 수 있으며 패스워드를 사용하지 않고 인증할 수 없습니다.
또한 사용자가 사용자로 로그온하는 동안 암호를 변경할 수도 있습니다.
이 두 가지 변경으로 모든 권한과 나머지는 수정된 것 같습니다.
Stephane의 대답을 설명하다.
는, 의 리모트 을, 「」에 때에 했습니다.root
다음 명령을 실행하여 MySQL 서버에서 사용자를 설정합니다.
USE database_name;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
이로 인해 다음 오류가 발생하였습니다.
ERROR 1133 (42000): Can't find any matching row in the user table
수정 방법은 다음과 같습니다.
먼저 MySQL 서버가 원격 연결을 허용하는지 확인합니다.원하는 텍스트 편집기를 사용하여 MySQL 서버 구성 파일을 엽니다.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[ bind - address ]행까지 스크롤하여가 코멘트 아웃 또는 치환되어 있는지 확인합니다.0.0.0.0
(모든 리모트 접속을 허용하는 경우) 또는 리모트 접속의 발신기지 IP 주소로 치환됩니다.
필요한 변경을 하면 Configuration파일을 저장하고 종료합니다.MySQL 서비스를 재시작하여 MySQL 구성 파일에 대한 변경 내용을 적용합니다.
sudo systemctl restart mysql
그런 다음 MySQL이 설치된 서버의 MySQL 서버 콘솔에 로그인합니다.
mysql -u root -p
mysql 사용자 비밀번호를 입력합니다.
사용자가 이미 액세스할 수 있는 호스트를 확인합니다.제 경우 사용자는root
:
SELECT host FROM mysql.user WHERE user = "root";
이것에 의해, 다음과 같은 출력이 얻을 수 있었습니다.
+-----------+
| host |
+-----------+
| localhost |
+-----------+
다음으로 이전에 오류를 발생시킨 명령과 유사한 다음 명령을 실행했는데, 이번에는 비밀번호를 추가했습니다.
USE database_name;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';
주의:%
합니다.접근을 허용하는 하려면 , 합니다.- 「 」 、 「 IP 」 。GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';
그 후, 유저가 액세스 할 수 있는 호스트를 확인했습니다.제 경우 사용자는root
:
SELECT host FROM mysql.user WHERE user = "root";
이것에 의해, 다음과 같은 출력이 얻을 수 있었습니다.
+-----------+
| host |
+-----------+
| % |
| localhost |
+-----------+
마지막으로 다음 명령을 사용하여 다른 서버에서 MySQL 서버에 연결을 시도할 수 있습니다.
mysql -u username -h mysql-server-ip-address -p
여기서 u는 사용자를 나타내고 h는 mysql-server-ip-address, p는 비밀번호를 나타냅니다.제 경우엔 다음과 같았습니다.
mysql -u root -h 34.69.261.158 -p
mysql 사용자 비밀번호를 입력합니다.
MySQL 서버 버전에 따라 다음 출력이 표시됩니다.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
그게 다예요.
이게 도움이 됐으면 좋겠다
newdb에 모든 것을 부여합니다.* 'password'로 식별되는 newuser@localhost로 이동합니다.
나처럼 실수를 하는 사람을 위해서.
명령어를 사용하고 있었습니다.
SET PASSWORD FOR root = 'elephant7'
root 사용자의 패스워드를 갱신하면 같은 에러가 발생합니다.모든 답변에서 위에서 언급한 모든 것을 시도해 보았지만 성공하지 못했으며, 조금 검색한 결과 답을 알게 되었습니다.
MySQL 계정 이름은 사용자 이름과 호스트 이름으로 구성됩니다.이것에 의해, 다른 호스트로부터 접속할 수 있는 같은 이름의 유저의 계정을 작성할 수 있습니다.
https://dba.stackexchange.com/ 에서
그리고 명령어를 사용해서
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('mynewpasword');
(여기서)'root'@'localhost'
속임수를 썼고 명령어는 성공했어
이것이 누군가에게 유익하기를 바랍니다.
PHPMyAdmin을 사용하는 경우 루트 비밀번호를 변경하려면 루트로 로그인해야 합니다.비밀번호를 변경하기 전에 root를 입력합니다.
제 경우 방금 Mysql 사용자 이름을 변경했는데, GUI 기반 DB 툴(DbVisualizer)에서 비밀번호를 변경할 예정이었습니다.SET PASSWORD'를 시도했던 단말기가 작동하지 않았습니다(MySQL Error #1133).
하지만 패스워드를 변경해도 아직 'SET PASSWORD' 명령어가 동작하지 않았습니다.
After closing the terminal and opening new one the command worked very well.
I think the answer is here now : https://bugs.mysql.com/bug.php?id=83822
So, you should write :
GRANT ALL PRIVILEGES ON mydb.* to myuser@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'mypassword';
And i think that could be work :
SET PASSWORD FOR myuser@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'old_password' = PASSWORD('new_password');
ReferenceURL : https://stackoverflow.com/questions/12877458/mysql-error-1133-cant-find-any-matching-row-in-the-user-table
'programing' 카테고리의 다른 글
ST_CONTENS를 통한 성능 저하 (0) | 2022.11.06 |
---|---|
VUEX가 변환을 찾지 못했지만 정의되어 있습니다. (0) | 2022.11.06 |
파손된 xampp 'mysql.user' 테이블 복구 방법 (0) | 2022.11.04 |
PHP에서 이메일을 검증하는 방법 (0) | 2022.11.04 |
왜 java.util일까요?선택사항은 Serialable이 아닙니다. 이러한 필드를 사용하여 개체를 Serialize하는 방법 (0) | 2022.11.04 |