programing

MySQL 데이터베이스에서 권한 제거

sourcejob 2022. 10. 25. 17:44
반응형

MySQL 데이터베이스에서 권한 제거

이것이 중복된 질문이라고 생각하기 전에, 저는 그것이 다소 어설프더라도 독특한 사례를 가지고 있다고 생각합니다.

며칠 전 Ubuntu 10.04 서버의 MySQL 버전을 5.3.3으로 업그레이드했습니다(Ubuntu 릴리즈 10.04보다 이전 버전입니다).오늘, 나는 무엇인가를 위해 phpMyAdmin에 로그인하려고 시도했고, 다소 두려운 것을 발견했다.Connection for controluser as defined in your configuration failed에러입니다.

이 문제를 해결하는 방법에 대한 몇 가지 SO 질문의 설명을 들은 후, 저는 꼼짝할 수 없게 되었습니다.

  • phpMyAdmin의 재구성을 시도했지만 실패했습니다.
  • phpMyAdmin을 제거하고 다시 설치하려고 했지만 DB에서 권한을 제거하지 못해 실패했습니다.
  • 그런 다음 사용자의 권한을 수동으로 삭제하려고 시도했습니다. 다소 어리석게도 추가할 수 있지만, DB에서 삭제한 후 사용자 권한을 삭제했습니다.flush privileges).
  • (애플리케이션과 /etc/phpmyadmin 디렉토리를 삭제) phpMyAdmin 설치 전체를 삭제하고 (apt-get을 사용하여) 재설치했지만 phpmyadmin 사용자의 권한은 이미 존재한다고 되어 있었습니다.

granting access to database phpmyadmin for phpmyadmin@localhost: already exists

자, 여기 남은 것이 있습니다.수정하거나 취소할 수 없는 허가가 있습니다.

mysql> show grants for 'phpmyadmin'@'localhost';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY PASSWORD '*46CFC7938B60837F46B610A2D10C248874555C14' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost'                                                |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.26 sec)

mysql> revoke usage on *.* from 'phpmyadmin'@'localhost';
ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'

mysql> revoke usage on *.* from 'phpmyadmin'@'localhost' identified by 'trustno1';
ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'

(걱정하지 마세요.이 패스워드는 더 이상 사용하지 않습니다만, 이전에 사용한 패스워드이며, 새로운 phpmyadmin 인스톨에서 선택한 패스워드가 아닙니다).

이러한 인가/특권을 완전히 삭제하려면 어떻게 해야 합니까?필요하다면 처음부터 다시 시작할 수 있습니다(즉, DB가 아닌 phmyadmin).

mysql의 USE-privilege는 글로벌레벨에서 정의된 사용자 'phpadmin'@'localhost'에 대한 권한이 없음을 의미합니다.*.*또한 동일한 사용자가 데이터베이스 phpmyadmin에 대한 ALL 권한을 가지고 있습니다.phpadmin.*.

따라서 모든 권한을 제거하고 처음부터 다시 시작하려면 다음을 수행합니다.

  • 데이터베이스 수준의 모든 권한 취소:

    REVOKE ALL PRIVILEGES ON phpmyadmin.* FROM 'phpmyadmin'@'localhost';

  • 'phpmyadmin'@'localhost' 사용자를 삭제합니다.

    DROP USER 'phpmyadmin'@'localhost';

위의 절차를 수행하면 사용자가 인스턴스에서 완전히 삭제되므로 처음부터 사용자를 다시 생성할 수 있습니다.

위에서 설명한 내용에 대한 약간의 배경 정보를 알려드리겠습니다.사용자를 작성하는 즉시mysql.user테이블이 채워집니다.레코드를 보면 사용자와 모든 권한이 다음과 같이 설정되어 있는 것을 알 수 있습니다.'N'를 하면,show grants for 'phpmyadmin'@'localhost';위에 출력된 모든 준비 완료 패밀리밀리어입니다.간단히 번역하면 "사용자에 대한 글로벌 수준의 권한이 없습니다"로 변환됩니다.이제 당신의 보조금ALL데이터베이스 레벨의 이 유저에게, 이것은 테이블에 격납됩니다.mysql.db를 하면,SELECT * FROM mysql.db WHERE db = 'nameofdb';를 볼 수 있습니다.'Y'사사건건

위의 설명은 현재 DB에 있는 시나리오를 보여줍니다.즉, 사용자만 사용할 수 있습니다.USAGEprivilege는 이 사용자가 접속할 수 있지만SHOW GLOBAL VARIABLES; SHOW GLOBAL STATUS;그는 다른 특권이 없다.

참고로 그 이유는revoke usage on *.* from 'phpmyadmin'@'localhost';does not active aspled :라는 이름의 허가가 없습니다.USAGE.

실제 명명된 인가는 MySQL Documentation에 있습니다.

조성금USAGE논리적 허가입니다. 어떻게요? 'phpmyadmin'@'localhost'에 엔트리가 있습니다.mysql.user여기서 user='myadmin' 및 host='localhost'를 선택합니다.mysql.user의 행은 의미상USAGE.입니다.DROP USER 'phpmyadmin'@'localhost';잘 될 겁니다이 제품은 실제로 다음과 같은 기능을 합니다.

DELETE FROM mysql.user WHERE user='phpmyadmin' and host='localhost';
DELETE FROM mysql.db   WHERE user='phpmyadmin' and host='localhost';
FLUSH PRIVILEGES;

따라서 행 삭제는mysql.user실행이 구성되다REVOKE USAGE,그럼에도 불구하고.REVOKE USAGE문자 그대로 실행할 수 없습니다.

언급URL : https://stackoverflow.com/questions/17799806/remove-privileges-from-mysql-database

반응형