저는 기본적으로 클라우드 서버에서 Apache 가상 호스트, Git 리포지토리 및 기타 항목을 준비하는 bash 스크립트 세트를 구축하고 있습니다. 지금까지는 괜찮았으나 큰 문제가 발생했습니다.MySQL 데이터베이스 및 사용자 생성.
현재 스크립트는 키와 함께 SSH를 사용하여 클라우드 서버에 인증하고 우리 팀의 모든 사람이 명령을 실행할 수 있습니다. 나는 이 방법을 유지하고 루트나 높은 권한을 가진 다른 사용자로 mysql에 로그인할 필요 없이 어떻게든 새로운 MySQL 데이터베이스와 사용자를 생성할 수 있도록 하고 싶지만 이에 대한 해결책은 없습니다.
아이디어 #1비밀번호 없이 새로운 mysql 사용자를 생성하고 루트와 같은 모든 권한을 부여하되 @'localhost'
.
아이디어 #2이 MySQL 제어 사용자의 비밀번호를 파일에 저장하고 다른 스크립트에서 사용하는 현재 SSH 사용자만 액세스할 수 있도록 하는 것입니다. 그런 다음 mysql 로그인은 이 저장된 비밀번호를 사용하여 로그인하고 데이터베이스와 사용자를 생성합니다.
어떤 옵션이 더 나은지는 모르겠지만 위험하다는 것은 알고 있습니다. 조언과 더 좋은 아이디어를 구하고 있습니다.
답변1
팀에서 사용하는 unix 사용자와 mysql 사용자가 원하는 작업을 계속 수행할 수 있으면서도 액세스 권한을 최소화할 수 있도록 하려고 합니다. 두 아이디어 모두 필요한 것보다 더 많은 액세스를 허용하는 것 같습니다. 팀 mysql 사용자에게 더 좋은 점은 다음과 같습니다.
- CREATE 액세스 권한 또는 필요한 모든 액세스 권한만 갖습니다(팀이 수행할 수 있는 작업을 최소한으로 제한). GRANT 문을 사용하여 mysql 사용자에게 액세스 권한을 부여할 수 있습니다.
- 소유자만 읽기 액세스 권한을 갖는 파일 에 사용자/비밀번호를 저장합니다
~/my.cnf
(더 이상 팀을 제한하지 않지만 다른 사람은 스크립트를 볼 경우 로그인 정보를 볼 수 없습니다).
위의 작업은 수행하기 쉽고 큰 진전을 이룹니다.
더 나은 아이디어이지만 더 많은 작업은 팀 사용자에게 데이터베이스 생성에 대한 액세스를 허용하지 않고 단지 자신만이 제어하고 액세스할 수 있는 또 다른 사용자 스크립트인 일부 대기열에 사이트를 설정하도록 요청하는 것입니다. 필수 ) 사이트 구축을 위해 정기적으로 처리됩니다. 대기열은 한 줄에 하나의 요청이 있는 파일, 파일당 하나의 요청이 있는 디렉터리 또는 레코드당 하나의 요청이 있는 데이터베이스 테이블일 수 있습니다. 시스템을 얼마나 보호하려는지에 따라 다릅니다.
일반적으로 루트 권한이 없는 unix 및 mysql 사용자를 사용해야 합니다. 데이터베이스를 생성 및 삭제하고 자주 사용하는 작업만 수행할 수 있는 mysql 사용자를 직접 만들었습니다. 액세스 권한을 부여하기 위해 다른 사용자를 설정해야 하는 경우에는 루트나 유사한 권한을 가진 사용자를 사용하겠습니다. 스크립트에서는 문제가 발생할 경우 피해를 최소화하기 위해 사용자를 최대한 제한합니다.