source

MySQL 사용자에게 호스트 액세스 권한 재할당

manysource 2022. 12. 24. 17:44

MySQL 사용자에게 호스트 액세스 권한 재할당

수천 명의 MySQL 사용자가 특정 호스트에서 액세스할 수 있도록 설정되어 있습니다.문제는 앞으로 두 대의 머신을 사용하게 될 것이며, 각 머신의 데이터베이스에 액세스하기 위해 동일한 계정을 사용해야 한다는 것입니다.

각 사용자 계정의 호스트 부분을 내부 네트워크 와일드카드에 맞게 빠르고 쉽게 실행하고 수정할 수 있는 방법을 원합니다.예를 들어 다음과 같습니다.

'bugsy'@'internalfoo'는 'bugsy' DB에 액세스할 수 있습니다.

내부 네트워크상의 어디에서나 버그시에의 액세스를 허가합니다.

'bugsy'@ '10.0.0.%'는 'bugsy' DB에 액세스할 수 있습니다.

수락된 답변은 사용자 이름만 변경했을 뿐 권한은 남겨졌습니다.

권장되는 항목:

RENAME USER 'foo'@'1.2.3.4' TO 'foo'@'1.2.3.5';

MySQL 문서에 따르면:

RENAME USER는 이전 사용자가 보유한 권한을 새 사용자가 보유한 권한으로 합니다.

참고로 솔루션은 다음과 같습니다.

UPDATE mysql.user SET host = '10.0.0.%' WHERE host = 'internalfoo' AND user != 'root';
UPDATE mysql.db SET host = '10.0.0.%' WHERE host = 'internalfoo' AND user != 'root';
FLUSH PRIVILEGES;

보다 일반적인 답은

UPDATE mysql.user SET host = {newhost} WHERE user = {youruser}

제가 권한을 얻었던 유사한 문제가 실패했습니다.셋업에서는 SSH만 사용합니다.그래서 이 문제를 해결하기 위해 제가 한 일은

sudo MySQL
SELECT User, Host FROM mysql.user WHERE Host <> '%';
MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> '%';
+-------+-------------+
| User  | Host        |
+-------+-------------+
| root  | 169.254.0.% |
| foo   | 192.168.0.% |
| bar   | 192.168.0.% |
+-------+-------------+
4 rows in set (0.00 sec)

이 사용자들을 'localhost'로 이동시켜야 합니다.그래서 나는 다음과 같이 발행했다.

UPDATE mysql.user SET host = 'localhost' WHERE user = 'foo';
UPDATE mysql.user SET host = 'localhost' WHERE user = 'bar';

SELECT User, Host FROM mysql.user WHERE Host <> '%' 를 실행합니다.다시 한 번 확인하겠습니다.

MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> '%';
+-------+-------------+
| User  | Host        |
+-------+-------------+
| root  | 169.254.0.% |
| foo   | localhost   |
| bar   | localhost   |
+-------+-------------+
4 rows in set (0.00 sec)

그리고 나서 나는 다시 정상적으로 일할 수 있었다.그게 도움이 됐으면 좋겠어요.

$ mysql -u foo -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 74
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

에서 같은 에러가 발생했습니다.RENAME USERGRANTs는 현재 승인된 솔루션으로는 적용되지 않습니다.

가장 신뢰할 수 있는 방법은 도망가는 것 같다.SHOW GRANTS이전 사용자의 경우 사용자 이름 및/또는 호스트에 대해 변경할 항목을 검색/바꾸고 실행한 후 마지막으로DROP USER오래된 사용자뛰는 것을 잊지 않다FLUSH PRIVILEGES(새 사용자의 권한을 추가한 후 이 작업을 실행하고 새 사용자를 테스트한 다음 이전 사용자를 삭제하고 적절한 조치를 위해 다시 플러시하는 것이 가장 좋습니다).

> 'olduser'@'oldhost에 대한 보조금 표시;+-----------------------------------------------------------------------------------+| olduser@oldhost에 대한 보조금 |+-----------------------------------------------------------------------------------+| 패스워드 '*PASSHASH'로 식별되는 'olduser'@'oldhost'에게 *.* 사용 허가 || GRANT SELECT ON 'db'를 선택합니다.* 'olduser'@ 'oldhost' |+-----------------------------------------------------------------------------------+2줄 세트(0.000초)
> 패스워드 '*SAME_PASSHASH'로 식별되는 'newuser'@'newhost'에게 *.*의 사용을 허가한다.Query OK(0.006초), 영향을 받는 행 0개
> GRANT SELECT ON 'db'를 선택합니다.* 'newuser'@ 'newhost'에게;Query OK(0.007초), 영향을 받는 행 0개
> 사용자 'olduser'@'oldhost'를 드롭한다.Query OK(0.016초), 영향을 받는 행 수 0개

나는 이것을 할 필요가 없었기 때문에, 이것을 소금에 절여 "테스트, 테스트, 테스트"라고 큰 그릇으로 받아 들이세요.

(「」)를 ?Hostmysql.user ★★★★★mysql.db:update를 참조해 주세요.패스워드 (MySQL하지 않을 PASSWORD기능상으로는 알 수 없지만, 확실히 해 둘 필요가 있습니다.명령어를 발행(또는 서버를 정지하고 재시작)해야 할 수 있습니다.

엔진에서는, 「MyISAM」( 「MyISAM」)을 체크..frm사용자가 작성한 보기를 파일로 만듭니다..frm파일에는 정의자의 호스트를 포함한 정의자가 저장됩니다.(잘못된 구성이 원인이 되어 잘못된 호스트가 기록된 호스트 간에 데이터베이스를 이동할 때 이 작업을 수행해야 했습니다...)

언급URL : https://stackoverflow.com/questions/1913984/re-assign-host-access-permission-to-mysql-user