init.d 스크립트에서 루트로 SQL 호출을 실행하시겠습니까?

init.d 스크립트에서 루트로 SQL 호출을 실행하시겠습니까?

소프트웨어 업데이트 후 부팅할 때마다 실행해야 하는 SQL 쿼리가 있습니다(업데이트는 mysql의 새로운 설치와 함께 제공되므로 debian-sys-maint 사용자의 비밀번호가 변경되어 내 스크립트가 데이터베이스에서 업데이트됩니다). /etc/init.d에 스크립트가 있고 이를 루트로 실행하면 다음이 수행됩니다 ./update. 하지만 시작하면 제대로 실행되지 않습니다. 전체 프로세스를 실행하기 위해 서비스 명령을 실행했지만 init.d다음과 같이 표시됩니다.

오류 1045(28000): 사용자 "root"@"localhost"에 대한 액세스가 거부되었습니다(비밀번호 사용: NO

/root/.my.cnf다양한 다른 스크립트에서 사용하지 않고 보안을 강화하기 위해 일반 텍스트 비밀번호를 입력했습니다 . -p스크립트를 수동으로 호출하면 mysql 호출이 완벽해집니다. 하지만 시작 시가 아닌 서비스 프로세스를 사용할 때는 그렇지 않습니다. 또 다른 질문에서 스크립트 환경이 제대로 설정되지 않았을 수도 있다고 언급했는데, 스크립트에서 mysql을 호출하여 /root/.my.cnf.

스크립트가 루트 소유이고 755 권한이 있는지 확인했습니다. 작동하게 하려면 어떻게 해야 합니까?

답변1

init.d 스크립트를 실행할 때 init.d 스크립트에서 명시적으로 얻지 않는 한 .my.cnf 스크립트는 사용되지 않습니다. 크론탭과 약간 비슷합니다. 그러니 소스를 찾아보고 작동하는지 확인하세요.

반면에 이 스크립트는 루트로 데이터베이스에 로그인해야 합니까? 운영 체제 수준 사용자가 루트여야 하는 이유는 이해하지만 데이터베이스 자체에는 왜 그러한 권한이 있는 사용자가 필요한가요?

답변2

sudomysql 호출 앞에 넣으면 문제가 해결되었고 이제 호출이 올바르게 실행되는 것으로 나타났습니다 . 나는 전혀 모른다:

  1. 스크립트가 루트로 실행되지 않는 이유
  2. 어떤 사용자로 실행됩니까?
  3. 이 사용자에게 sudoer 기능이 있는 이유는 무엇입니까?

관련 정보