- 1 1. MySQL 루트 비밀번호 확인 방법
- 2 2. MySQL 루트 비밀번호 변경 방법
- 3 3. 루트 비밀번호를 잊어버린 경우 대처 방법
- 4 4. MySQL 보안을 강화하기 위한 모범 사례
- 5 5. Frequently Asked Questions (FAQ)
- 5.1 Q1. 초기 MySQL 비밀번호를 로그에서 찾을 수 없습니다. 어떻게 해야 하나요?
- 5.2 Q2. root 외의 사용자가 동일한 절차로 비밀번호를 변경할 수 있나요?
- 5.3 Q3. mysqld_safe 명령을 찾을 수 없습니다. 어떻게 해야 하나요?
- 5.4 Q4. 비밀번호를 변경했지만 여전히 로그인할 수 없습니다. 이유가 무엇인가요?
- 5.5 Q5. MySQL 보안을 한 번에 강화할 수 있는 방법이 있나요?
- 5.6 Q6. MySQL 버전에 따라 비밀번호 관리가 달라지나요?
- 5.7 Q7. root 사용자의 원격 연결을 허용하려면 어떻게 해야 하나요?
- 5.8 Q8. 루트 비밀번호를 재설정하는 단계를 간단히 설명해 주실 수 있나요?
1. MySQL 루트 비밀번호 확인 방법
MySQL 루트 비밀번호는 데이터베이스 관리에서 중요한 요소입니다. 그러나 특히 초보자에게는 “비밀번호를 모르겠어요” 또는 “초기 비밀번호는 어디서 찾을 수 있나요?”라고 궁금할 수 있습니다. 이 섹션에서는 MySQL 루트 비밀번호를 확인하는 구체적인 방법을 설명하겠습니다.
초기 비밀번호 확인 방법
MySQL 5.7 이상 버전에서는 설치 중 루트 사용자에 대한 초기 비밀번호가 자동으로 생성되어 로그 파일에 기록됩니다. 이 임시 비밀번호를 확인하려면 아래 단계를 따르세요.
단계
- MySQL 로그 파일을 확인하기 위해 터미널(또는 명령 프롬프트)을 열어요.
- 다음 명령어를 실행하세요:
sudo grep 'temporary password' /var/log/mysqld.log
- 출력 결과에는 다음과 유사한 내용이 포함됩니다:
[Note] A temporary password is generated for root@localhost: EaGapdplN0*m
- 이 경우
EaGapdplN0*m은 루트 사용자의 초기 비밀번호입니다.
중요 사항
- 임시 비밀번호는 한 번만 사용할 수 있습니다. 로그인 후 즉시 변경해야 합니다.
- 로그 파일을 찾을 수 없거나 권한 오류가 발생하면 관리자 권한으로 명령어를 실행하세요.
현재 비밀번호 확인 방법
보안상의 이유로 MySQL은 기존 루트 비밀번호를 직접 확인할 수 있는 명령어나 방법을 제공하지 않습니다. 현재 비밀번호를 모르는 경우 “루트 비밀번호를 잊어버린 경우 대처 방법” 섹션을 참조하여 재설정하는 것을 고려하세요.
2. MySQL 루트 비밀번호 변경 방법
MySQL 루트 비밀번호를 정기적으로 변경하는 것은 보안을 유지하는 데 중요합니다. 이 섹션에서는 현재 루트 자격 증명을 사용하여 비밀번호를 변경하는 방법을 자세히 설명하겠습니다.
비밀번호 변경 기본 단계
MySQL에 로그인하고 새 비밀번호를 설정하려면 다음 단계를 따르세요.
단계
- 터미널 또는 명령 프롬프트를 열고 MySQL에 로그인하기 위해 다음 명령어를 입력하세요:
mysql -u root -p
-u root는 사용자 이름이 root임을 지정합니다.-p는 로그인 중 비밀번호 입력을 요청합니다.
- 다음 SQL 명령어를 실행하여 비밀번호를 변경하세요:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
- 다음을 실행하여 권한 정보를 다시 로드하세요:
FLUSH PRIVILEGES;
- 명령어가 성공적으로 실행된 후 MySQL에서 로그아웃하세요:
exit
중요 사항
- 강력한 비밀번호 사용
새 비밀번호에는 다음 요소를 포함하는 것을 권장합니다: 예시:
MyS3cure!2025- 대문자와 소문자
- 숫자
- 기호 (예: @, #, $, !)
- 최소 12자 길이
- 활성 세션에 주의하세요
- MySQL 세션 중에 비밀번호를 변경하면 다시 연결해야 할 수 있습니다.
- 사용자 권한 확인
- 루트 사용자가 적절한 권한을 가지고 있는지 확인하세요. 비밀번호를 변경할 수 없는 경우 시스템 관리자에게 문의하세요.
비밀번호 변경 시 일반적인 문제
비밀번호 변경 후 로그인 불가
- 원인:
FLUSH PRIVILEGES명령어를 실행하지 않았을 수 있습니다. - 해결 방법: 다시 로그인하고
FLUSH PRIVILEGES;를 실행하세요.
새 비밀번호가 보안 정책 요구 사항을 충족하지 않음
- 원인: MySQL에 엄격한 비밀번호 정책이 활성화되어 있을 수 있습니다.
- 해결 방법: 더 강력한 비밀번호를 설정하거나 필요 시 정책 설정을 조정하세요.
3. 루트 비밀번호를 잊어버린 경우 대처 방법
MySQL 루트 비밀번호를 잊어버리면 일반 로그인 방법으로 데이터베이스에 액세스할 수 없습니다. 그러나 MySQL의 인증 시스템을 일시적으로 비활성화하여 비밀번호를 재설정할 수 있습니다. 이 섹션에서는 자세한 단계를 설명합니다.
루트 비밀번호 재설정 단계
1. MySQL 서비스 중지
먼저 데이터베이스를 일시적으로 종료하기 위해 MySQL 서비스를 중지하세요. 다음 명령어를 사용하세요:
sudo systemctl stop mysqld
- 명령어가 성공적으로 실행되면 MySQL 서비스가 중지됩니다.
2. 인증 비활성화 상태에서 MySQL 시작
--skip-grant-tables 옵션을 사용하여 인증을 비활성화하고 MySQL을 시작합니다.
sudo mysqld_safe --skip-grant-tables &
- 이 명령은 인증을 적용하지 않고 MySQL을 시작합니다.
- 중요: 이 모드에서는 보안이 크게 감소하므로 작업 중에 다른 사용자가 시스템에 접근하지 못하도록 하세요.
3. 루트 비밀번호 재설정
인증이 비활성화된 상태에서 MySQL에 로그인하고 비밀번호를 재설정합니다.
- MySQL에 로그인합니다:
mysql -u root
- 다음 명령으로 새 루트 비밀번호를 설정합니다:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
- 권한 정보를 다시 로드합니다:
FLUSH PRIVILEGES;
- 작업을 마친 후 MySQL에서 로그아웃합니다:
exit
4. MySQL 서비스 재시작
일반 인증을 다시 활성화하기 위해 MySQL 서비스를 재시작합니다:
sudo systemctl restart mysqld
재시작 후, 새로 설정한 비밀번호로 MySQL에 로그인합니다.
중요 사항
- 보안 유지
--skip-grant-tables옵션을 사용할 때 MySQL은 완전히 보호되지 않습니다. 작업을 신속히 수행하고 불필요한 위험을 피하세요.- 다른 사용자에 대한 영향
- 이 방법은 루트 계정을 대상으로 합니다. 다른 사용자가 영향을 받지 않도록 확인하세요.
문제 해결
mysqld_safe 명령을 찾을 수 없음
- 원인: 일부 Linux 배포판에서는
mysqld_safe가 설치되어 있지 않을 수 있습니다. - 해결책: 다음과 같이 MySQL을 직접 시작합니다:
sudo mysqld --skip-grant-tables &
비밀번호 재설정 후에도 로그인할 수 없음
- 원인: MySQL이 업데이트된 권한 정보를 다시 로드하지 않았을 수 있습니다.
- 해결책: 다시 로그인한 뒤
FLUSH PRIVILEGES;를 실행합니다.
4. MySQL 보안을 강화하기 위한 모범 사례
MySQL 루트 비밀번호를 적절히 관리하는 것은 중요하지만 그것만으로는 충분하지 않습니다. 데이터베이스를 안전하게 운영하려면 추가적인 보안 조치를 구현해야 합니다. 이 섹션에서는 MySQL 보안을 강화하는 실용적인 방법을 소개합니다.
강력한 비밀번호 설정
데이터베이스 보안은 비밀번호 강도에 크게 좌우됩니다. 강력한 비밀번호를 만들 때 다음 지침을 따르세요.
비밀번호 생성 가이드라인
- 길이: 최소 12자
- 문자 종류: 대문자, 소문자, 숫자, 기호를 조합
- 예시:
2#SecureMySQL_2025!
보안 정책 적용
MySQL에서는 비밀번호 검증 정책을 설정할 수 있습니다. 현재 정책을 확인하려면 다음 명령을 사용하세요:
SHOW VARIABLES LIKE 'validate_password%';
필요에 따라 정책을 다음과 같이 수정합니다:
SET GLOBAL validate_password_policy = 'MEDIUM';
SET GLOBAL validate_password_length = 12;
불필요한 계정 및 데이터 제거
불필요한 계정 확인 및 삭제
설치 과정에서 MySQL은 기본 테스트 계정이나 익명 사용자를 만들 수 있습니다. 이러한 계정은 보안 위험이 될 수 있으므로 필요하지 않다면 삭제해야 합니다.
- 현재 사용자 목록을 확인합니다:
SELECT user, host FROM mysql.user;
- 불필요한 사용자를 삭제합니다:
DROP USER 'username'@'hostname';
테스트 데이터베이스 삭제
설치 중 생성된 테스트 데이터베이스를 제거합니다:
DROP DATABASE test;
루트 계정 접근 제한
루트 계정에 대한 접근을 제한하면 보안이 강화됩니다.
로컬 접근만 허용하도록 제한
기본적으로 루트 계정은 원격 접속을 허용할 수 있습니다. 이를 로컬 접근만 허용하도록 제한합니다:
UPDATE mysql.user SET host = 'localhost' WHERE user = 'root';
FLUSH PRIVILEGES;
별도의 관리 계정 생성
루트 계정을 직접 사용하는 대신, 특정 작업을 위한 전용 관리 계정을 만드는 것이 권장됩니다.
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'StrongAdminPassword';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
최소 권한 원칙 적용
각 사용자에게 최소한의 권한만 부여하여 보안을 강화하세요.
Check Existing Privileges
SHOW GRANTS FOR 'username'@'hostname';
Revoke Unnecessary Privileges
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'hostname';
Automate MySQL Security Configuration
MySQL은 보안 구성을 간소화하기 위해 mysql_secure_installation 명령을 제공합니다. 이 명령을 실행하면 다음을 수행할 수 있습니다:
- 테스트 계정 및 데이터베이스 제거
- 원격 root 로그인 비활성화
- 보안 정책 적용
Execution Command
sudo mysql_secure_installation
Perform Regular Backups
보안을 강화하기 위한 일환으로 정기적인 데이터베이스 백업을 강력히 권장합니다. 이를 통해 예기치 않은 문제 발생 시 데이터를 복구할 수 있습니다.
Backup Examples
- 전체 데이터베이스 백업:
mysqldump -u root -p --all-databases > backup.sql
- 특정 데이터베이스 백업:
mysqldump -u root -p database_name > database_name_backup.sql

5. Frequently Asked Questions (FAQ)
아래는 MySQL root 비밀번호 관리 및 보안 구성에 관한 자주 묻는 질문과 답변입니다. 이 섹션을 문제 해결 및 추가적인 우려 사항 해결에 활용하십시오.
Q1. 초기 MySQL 비밀번호를 로그에서 찾을 수 없습니다. 어떻게 해야 하나요?
A1:
MySQL 5.7 이상에서는 초기 비밀번호가 로그 파일(보통 /var/log/mysqld.log)에 기록됩니다. 그러나 로그 파일을 찾을 수 없거나 삭제된 경우 다음을 시도하십시오:
- MySQL을 재설치하면 새로운 임시 비밀번호가 생성됩니다.
- 여전히 로그인할 수 없으면 “Root 비밀번호를 잊어버렸을 때 대처 방법”을 참고하여 비밀번호를 재설정하십시오.
Q2. root 외의 사용자가 동일한 절차로 비밀번호를 변경할 수 있나요?
A2:
예, root가 아닌 사용자도 동일한 방법으로 비밀번호를 변경할 수 있습니다. 다만 해당 사용자에게 관리 권한이 필요합니다. 다음 명령을 사용하십시오:
ALTER USER 'username'@'hostname' IDENTIFIED BY 'NewStrongPassword';
Q3. mysqld_safe 명령을 찾을 수 없습니다. 어떻게 해야 하나요?
A3:
일부 Linux 배포판에서는 mysqld_safe가 설치되지 않을 수 있습니다. 이 경우 mysqld 명령에 --skip-grant-tables 옵션을 사용하여 MySQL을 시작할 수 있습니다:
sudo mysqld --skip-grant-tables &
하지만 이 방법은 인증을 비활성화하므로 동일한 보안 주의사항을 적용해야 합니다.
Q4. 비밀번호를 변경했지만 여전히 로그인할 수 없습니다. 이유가 무엇인가요?
A4:
가능한 원인으로는 다음과 같습니다:
- 권한 정보가 업데이트되지 않음: 비밀번호를 변경한 후 다음 명령을 실행하여 권한을 새로 고칩니다:
FLUSH PRIVILEGES;
- 입력 오류: 새 비밀번호의 대문자, 소문자 및 특수 문자가 정확히 입력되었는지 확인하십시오.
- 비밀번호 정책 제한: MySQL은 보안 정책에 따라 약한 비밀번호를 거부할 수 있습니다. 정책 설정을 확인하고 더 강력한 비밀번호를 사용하십시오.
Q5. MySQL 보안을 한 번에 강화할 수 있는 방법이 있나요?
A5:
MySQL 보안 설정을 효율적으로 구성하려면 mysql_secure_installation 명령을 사용하는 것이 권장됩니다. 이 명령은 자동으로 다음을 수행합니다:
- 테스트 사용자 및 데이터베이스 제거
- 원격 root 로그인 비활성화
- 강력한 비밀번호 정책 적용
다음과 같이 명령을 실행하십시오:
sudo mysql_secure_installation
Q6. MySQL 버전에 따라 비밀번호 관리가 달라지나요?
A6:
예, root 비밀번호 관리 방법은 MySQL 버전에 따라 달라질 수 있습니다. 주요 차이점은 다음과 같습니다:
- MySQL 5.7 이상: 임시 비밀번호가 자동으로 생성되어 로그 파일에 기록됩니다.
- MySQL 5.6 이하: 초기 비밀번호가 비어 있을 수 있습니다(비밀번호가 설정되지 않음).
MySQL 버전을 확인하려면 다음 명령을 사용하십시오:
mysql --version
Q7. root 사용자의 원격 연결을 허용하려면 어떻게 해야 하나요?
A7:
보안상의 이유로 원격 루트 액세스는 권장되지 않습니다. 그러나 필요하다면 다음 명령어로 활성화할 수 있습니다:
- 원격 액세스 허용:
UPDATE mysql.user SET host = '%' WHERE user = 'root';
- 권한 정보 다시 로드:
FLUSH PRIVILEGES;
중요:
원격 액세스를 허용하면 방화벽 규칙 및 IP 제한과 같은 추가 보안 조치를 구현해야 합니다.
Q8. 루트 비밀번호를 재설정하는 단계를 간단히 설명해 주실 수 있나요?
A8:
- MySQL 서비스 중지:
sudo systemctl stop mysqld
- 인증 비활성화로 MySQL 시작:
sudo mysqld_safe --skip-grant-tables &
- 비밀번호 재설정:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword'; FLUSH PRIVILEGES;
- MySQL 서비스 재시작:
sudo systemctl restart mysqld


