저는 기본적으로 클라우드 서버에서 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 사용자를 직접 생성합니다. 액세스 권한을 부여하기 위해 다른 사용자를 설정해야 하는 경우에만 루트 또는 유사한 권한을 가진 사용자를 사용합니다. 스크립트에서는 문제가 발생할 경우 피해를 제한하기 위해 사용자를 최대한 제한합니다.