source

MySQL: ERROR 1227 (42000):액세스 거부 - 사용자를 생성할 수 없습니다.

lovecheck 2023. 9. 24. 12:59
반응형

MySQL: ERROR 1227 (42000):액세스 거부 - 사용자를 생성할 수 없습니다.

저는 Win7에서 MySQL 5.5.16 noinstall Zip Archive를 사용하고 있습니다.

서버를 시작한 후 명령어는show databases2개의 데이터베이스 목록을 보여줬습니다information_schema그리고.test. 후자는 비어 있습니다.

테이블은 어디에 있습니까?user?

이 명령을 통해 새 사용자를 생성하려고 했습니다.create user newUser;그리고 다음과 같은 오류 메시지를 받았습니다.ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

데이터베이스, 테이블을 만들고 원하는 모든 작업을 수행하려면 어떻게 해야 합니까?제가 사용하고 있는 사실이MySQL 5.5.16 noinstall Zip Archive오류 메시지와 관련이 있습니까?

먼저 실행해야 할 작업은 다음과 같습니다.

SHOW GRANTS;

익명의 사용자가 mysql에 인증하도록 할당되었다는 것을 금방 알 수 있습니다.

mysql에 로그인하는 대신

mysql

로그인은 다음과 같이 로그인합니다.

mysql -uroot

기본적으로 root@localhost에는 모든 권한이 있고 암호는 없습니다.

암호 없이 root으로 로그인할 수 없는 경우 다음을 수행합니다.

01단계) my.ini의 mysqld 섹션에서 두 가지 옵션을 추가합니다.

[mysqld]
skip-grant-tables
skip-networking

02) mysql 재시작

net stop mysql
<wait 10 seconds>
net start mysql

03단계) mysql에 연결합니다.

mysql

04단계) root@localhost에서 암호 생성

UPDATE mysql.user SET password=password('whateverpasswordyoulike')
WHERE user='root' AND host='localhost';
exit

05단계) mysql 재시작

net stop mysql
<wait 10 seconds>
net start mysql

06단계) 비밀번호 루트로 로그인

mysql -u root -p

당신은 거기서부터 잘 해야 합니다.

주의: 익명의 사용자를 삭제해주세요!!!

나에게 문제는 (아주 이상한 이유로) 루트가 가지고 있다는 사실이었습니다.Host%대신에localhost

저는 위와 같은 오류를 받았습니다.DROP USER; 위 답변에서 제시한 권한 - 이미 가지고 있어서 솔루션이 제게 적합하지 않습니다.

DB는 다음과 같습니다.

mysql> drop user 'testuser'@'%';
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

mysql> select Host,User,drop_priv from user;
+------+------------------+-----------+
| Host | User             | drop_priv |
+------+------------------+-----------+
| %    | mysql.infoschema | N         |
| %    | mysql.session    | N         |
| %    | mysql.sys        | N         |
| %    | root             | Y         |
+------+------------------+-----------+

그리고.

mysql> SHOW GRANTS FOR 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                                                                                                                                                                                                                                                                                                |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

여러가지 시도를 해보았지만, 결국에는 그 방법을 바꾸게 되었습니다.Host부터%로.localhost보안 문제 때문에 다른 건 없어요

mysql> UPDATE user SET Host='localhost' WHERE user='root' LIMIT 1;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

왜 그랬는지는 모르겠지만 효과는 있었습니다.

mysql> quit

$ mysql -u root -p
.. ENTER (NO PASSWORD) ..

mysql> drop user 'testuser'@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

이유는 모르겠지만 다른 사람들에게 도움이 되기를 바랍니다.센트를 사용합니다.SELinux와 다른 것들이 있는 OS, 아마도 다른 구성 요소들이 이것과 연관되어 있을 것입니다.몰라.

언급URL : https://stackoverflow.com/questions/7797543/mysql-error-1227-42000-access-denied-cannot-create-user

반응형