Solaris 11.4 환경에서 MySQL 5.7을 설치한 직후 초기 비밀번호를 모르거나 분실했을 때, 안전하게 패스워드를 초기화하는 절차를 안내해 드립니다.
Solaris의 서비스 관리 체계인 SMF(Service Management Facility) 명령어를 활용하는 것이 핵심입니다.
1. MySQL 서비스 중지
먼저 실행 중인 MySQL 서비스를 중지해야 합니다.
svcadm disable mysql:version_57
2. 인증 생략 모드로 MySQL 실행
비밀번호 없이 접속할 수 있도록 --skip-grant-tables 옵션을 사용하여 수동으로 프로세스를 실행합니다.
/usr/mysql/5.7/bin/mysqld_safe --skip-grant-tables &
3. 비밀번호 없이 접속 및 초기화
이제 mysql 클라이언트로 접속하여 비밀번호를 수정합니다.
- 접속:
-
Bash
/usr/mysql/5.7/bin/mysql -u root - 비밀번호 변경 쿼리 실행: MySQL 5.7부터는 password 컬럼 대신 authentication_string을 사용합니다.
-
SQL
UPDATE mysql.user SET authentication_string=PASSWORD('새로운비밀번호') WHERE User='root'; FLUSH PRIVILEGES; EXIT;
4. 프로세스 종료 및 서비스 정상 재시작
수동으로 띄운 프로세스를 종료하고, 다시 SMF를 통해 정상 모드로 구동합니다.
- 프로세스 종료:
-
Bash
pkill mysqld - 서비스 재시작:
-
Bash
svcadm enable mysql:version_57
5. (중요) 첫 접속 시 비밀번호 재설정 요구 해결
MySQL 5.7은 보안 정책상 위 단계에서 비밀번호를 바꿨더라도, 첫 접속 시 비밀번호를 다시 한 번 설정하라는 메시지가 뜰 수 있습니다.
/usr/mysql/5.7/bin/mysql -u root -p
# 설정한 비밀번호 입력 후 접속
만약 접속 후 쿼리가 실행되지 않고 You must reset your password... 에러가 발생한다면 아래 명령을 한 번 더 입력해 주세요.
ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운비밀번호';
참고 사항:
- 경로: Solaris 버전에 따라 바이너리 경로가 다를 수 있습니다. 위 예시는 기본값인 /usr/mysql/5.7/bin/을 기준으로 작성되었습니다.
- 로그 파일: 초기 설치 직후라면 /var/mysql/5.7/data/ 디렉터리 내의 .err 확장자 파일을 확인해 보세요. 설치 시 생성된 임시 비밀번호가 기록되어 있을 수도 있습니다.
혹시 진행 과정에서 특정 에러 메시지가 발생한다면 말씀해 주세요. 상세히 도와드리겠습니다!
mysql 포트 확인
Solaris 11.4 환경에서 MySQL 5.7의 포트를 확인하는 방법은 크게 3가지가 있습니다. 현재 서비스가 구동 중인지, 혹은 설정 파일에 무엇이라 명시되어 있는지에 따라 적절한 방법을 선택하시면 됩니다.
1. 설정 파일(my.cnf)에서 확인
MySQL이 실행 중이지 않아도 확인할 수 있는 가장 확실한 방법입니다. Solaris의 MySQL 5.7 기본 설정 경로를 확인하세요.
- 기본 경로: /etc/mysql/5.7/my.cnf 또는 /usr/mysql/5.7/my.cnf
- 명령어:출력 예시: port = 3306 (별도 설정이 없다면 기본값은 3306입니다.)
-
Bash
grep "port" /etc/mysql/5.7/my.cnf
2. MySQL 접속 후 확인 (실행 중일 때)
데이터베이스에 로그인할 수 있는 상태라면 SQL 쿼리로 직접 조회하는 것이 가장 정확합니다.
-- MySQL 접속 후 입력
SHOW VARIABLES LIKE 'port';
3. Solaris 네트워크 상태 명령어(netstat)로 확인
OS 차원에서 MySQL 프로세스가 어떤 포트를 점유하고 있는지 실시간으로 확인하는 방법입니다.
netstat -an | grep LISTEN | grep 3306
또는 프로세스 ID(PID)와 연계해서 확인하고 싶다면 아래 명령어를 사용하세요.
# MySQL 프로세스의 수신 포트 확인
netstat -anv | grep mysql
4. 서비스 속성(SMF) 확인
Solaris 11.4는 SMF를 통해 서비스를 관리하므로, 서비스에 정의된 속성값에 포트 정보가 포함되어 있을 수 있습니다.
svcprop -p config/port mysql:version_57
추가 팁: 만약 외부에서 MySQL에 접속이 안 되어 포트를 확인하시는 것이라면, Solaris의 방화벽인 IP Filter나 MySQL의 bind-address 설정(기본 127.0.0.1)이 외부 접속을 막고 있는지 확인해 보시는 것이 좋습니다.
확인하신 포트 번호가 기본값인 3306이 아닌가요? 아니면 외부 접속 허용 방법이 궁금하신가요?
/usr/mysql/5.7/bin/mysqld_safe --skip-grant-tables &로 들어가서 root 패스워드 변경하는 법
앞서 설명드린 절차 중 --skip-grant-tables 모드로 진입한 이후의 상세 과정을 단계별로 정리해 드립니다. 이 모드에서는 비밀번호 없이 로그인이 가능하지만, 보안 기능이 일부 비활성화되어 일반적인 SET PASSWORD 명령이 작동하지 않을 수 있으므로 아래 순서대로 입력하는 것이 정확합니다.
1단계: MySQL 접속
터미널에서 비밀번호 없이 root 계정으로 접속합니다.
/usr/mysql/5.7/bin/mysql -u root
2단계: 권한 정보 업데이트 (핵심 쿼리)
접속 후 아래 명령어를 한 줄씩 실행하세요. 주의: MySQL 5.7 버전은 password라는 필드 대신 authentication_string 필드를 사용합니다.
-- 1. 권한 테이블이 있는 mysql 데이터베이스 선택
USE mysql;
-- 2. root 사용자의 비밀번호 변경 (원하는 비밀번호를 'NewPassword123!' 자리에 입력)
UPDATE user SET authentication_string=PASSWORD('NewPassword123!') WHERE User='root';
-- 3. 변경사항 즉시 적용
FLUSH PRIVILEGES;
-- 4. 나가기
EXIT;
3단계: 안전 모드 프로세스 종료
--skip-grant-tables로 실행 중인 임시 프로세스를 완전히 죽여야 정상 모드로 재시작할 수 있습니다.
# 실행 중인 mysqld 프로세스 종료
pkill mysqld
4단계: 정상 서비스 시작
Solaris의 SMF를 사용하여 MySQL 서비스를 정상적으로 다시 올립니다.
svcadm enable mysql:version_57
💡 만약 위 방법으로도 안 된다면? (ALTER USER 방식)
MySQL 5.7의 세부 버전에 따라 UPDATE 문 대신 ALTER USER를 써야 할 때가 있습니다. 만약 위 과정 후에도 로그인이 안 된다면, 2단계에서 아래 명령어를 시도해 보세요.
-- FLUSH PRIVILEGES를 먼저 실행해야 ALTER USER 명령이 먹힙니다.
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
FLUSH PRIVILEGES;
⚠️ 주의사항: 패스워드 복잡성
MySQL 5.7에 validate_password 플러그인이 활성화되어 있다면, 비밀번호가 너무 단순할 경우(예: 1234) 오류가 발생하며 변경되지 않습니다. 영문 대소문자, 숫자, 특수문자를 포함하여 8자 이상으로 설정하는 것이 좋습니다.
이제 설정한 비밀번호로 접속이 잘 되시나요? 접속 후 정상적으로 쿼리가 실행되는지 확인해 보시기 바랍니다.
solaris11.4에서 mysql 접속 후 use mysql error 1049 42000
Solaris 11.4 환경에서 USE mysql 실행 시 발생한 **Error 1049 (42000)**는 현재 MySQL 서버 안에 mysql이라는 이름의 시스템 데이터베이스가 존재하지 않거나, 찾을 수 없을 때 발생하는 에러입니다.
보통 MySQL 설치 후 **데이터 디렉터리 초기화(Initialization)**가 정상적으로 이루어지지 않았을 때 발생합니다. 아래 절차에 따라 해결해 보세요.
1. 실제로 데이터베이스가 있는지 확인
먼저 접속한 상태에서 현재 어떤 데이터베이스들이 있는지 확인합니다.
SHOW DATABASES;
만약 목록에 mysql, information_schema, performance_schema 등이 전혀 보이지 않는다면, 데이터베이스 엔진이 기초 데이터를 생성하지 못한 상태입니다.
2. 원인: 데이터 디렉터리 미초기화
Solaris에서 pkg 명령어로 MySQL을 설치한 직후라면, 시스템 테이블이 들어있는 mysql 데이터베이스가 생성되지 않았을 수 있습니다.
해결 방법: 초기화 명령어 실행 먼저 실행 중인 mysqld_safe나 MySQL 서비스를 중지한 후, 아래 명령어로 초기화를 진행합니다.
- 서비스 중지
-
Bash
pkill mysqld - 데이터 디렉터리 초기화 (MySQL 5.7 기준)
- --initialize-insecure: root 비밀번호를 임시로 생성하지 않고 빈 값으로 설정하여 초기화합니다.
- --datadir: 실제 데이터가 저장될 경로를 지정합니다. (기본값 확인 필요)
-
Bash
/usr/mysql/5.7/bin/mysqld --initialize-insecure --user=mysql --datadir=/var/mysql/5.7/data
3. 다시 인증 생략 모드로 접속 시도
초기화가 완료되면 다시 안전 모드로 띄워 접속합니다.
# 안전 모드 실행
/usr/mysql/5.7/bin/mysqld_safe --skip-grant-tables &
# 접속
/usr/mysql/5.7/bin/mysql -u root
이제 USE mysql; 명령어가 정상적으로 작동할 것입니다. 그 후 이전 단계에서 안내해 드린 비밀번호 변경 쿼리를 실행하시면 됩니다.
⚠️ 주의사항 (Solaris 특정 환경)
Solaris 11.4에서는 파일 시스템 권한 문제로 인해 데이터베이스 생성이 실패할 수 있습니다. /var/mysql/5.7/data 디렉터리의 소유자가 mysql 사용자로 되어 있는지 확인해 보세요.
ls -ld /var/mysql/5.7/data
# 소유자가 root라면 변경 필요
chown -R mysql:mysql /var/mysql/5.7/data
데이터베이스 초기화 후에도 동일한 에러가 발생하나요? 아니면 초기화 과정에서 다른 메시지가 출력되나요?
Solving ERROR 1049 (42000): Unknown database in MySQL 이 영상은 MySQL에서 'Unknown database' 에러가 발생하는 일반적인 원인과 이를 해결하기 위해 데이터베이스 존재 여부를 확인하는 기초적인 방법을 설명하고 있어 문제 파악에 도움이 됩니다.
show databases; 결과에 information_schema만 보인다는 것은 현재 MySQL 서버가 정상적으로 초기화되지 않았거나, 시스템 테이블이 들어있는 실제 데이터 디렉터리를 읽지 못하고 메모리상의 임시 정보만 보여주고 있다는 뜻입니다.
이 상태에서는 mysql 데이터베이스가 없으므로 UPDATE user... 같은 명령어가 통하지 않습니다. 데이터베이스 초기화부터 다시 진행해야 합니다.
1. 의미: 왜 information_schema만 보이나요?
- 시스템 테이블 부재: mysql이라는 이름의 실제 데이터베이스(사용자 정보, 권한 등이 저장되는 곳)가 생성되지 않았습니다.
- 권한 문제: MySQL 프로세스가 데이터 저장 폴더(datadir)에 접근할 권한이 없어 기초 데이터를 로드하지 못했을 가능성이 큽니다.
- 초기화 미실행: Solaris에서 패키지 설치 후 데이터베이스 초기 생성 과정을 거치지 않았을 때 나타나는 전형적인 현상입니다.
2. 해결 방법: 데이터베이스 초기화 및 root 설정
Solaris 11.4의 MySQL 5.7 경로를 기준으로 설명합니다.
① 기존 프로세스 정리
먼저 실행 중인 모든 MySQL 관련 프로세스를 종료합니다.
pkill mysqld
② 데이터 디렉터리 권한 확인 및 초기화
Solaris에서는 /var/mysql/5.7/data가 기본 데이터 경로입니다. 이 폴더를 비우고 소유권을 설정한 뒤 초기화합니다. (이미 데이터가 있다면 백업하세요.)
# 1. 기존 데이터 폴더가 있다면 삭제 (깨끗한 상태에서 시작)
rm -rf /var/mysql/5.7/data/*
# 2. 소유권 설정
chown -R mysql:mysql /var/mysql/5.7/data
# 3. 데이터베이스 초기화 (비밀번호 없이 생성)
/usr/mysql/5.7/bin/mysqld --initialize-insecure --user=mysql --datadir=/var/mysql/5.7/data
참고: --initialize-insecure 옵션을 쓰면 root 비밀번호가 빈 값(None)으로 생성되어 관리가 편합니다.
③ MySQL 서버 실행
이제 다시 인증을 생략하고 서버를 띄웁니다.
/usr/mysql/5.7/bin/mysqld_safe --skip-grant-tables --user=mysql &
④ root 패스워드 설정
이제 mysql 데이터베이스가 보이므로 패스워드 설정이 가능합니다.
/usr/mysql/5.7/bin/mysql -u root
# 접속 후 실행
mysql> SHOW DATABASES; -- 이제 mysql, sys, performance_schema 등이 보여야 합니다.
mysql> USE mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운비밀번호123!';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
3. 최종 단계: 서비스 정상화
이제 수동으로 띄운 프로세스를 죽이고 Solaris 서비스 관리자(SMF)를 통해 정식으로 가동합니다.
pkill mysqld
svcadm enable mysql:version_57
이제 /usr/mysql/5.7/bin/mysql -u root -p 명령어로 새로 설정한 비밀번호를 입력해 접속해 보세요.
혹시 초기화(--initialize-insecure) 단계에서 에러 메시지가 나오나요? 에러가 나온다면 해당 메시지를 알려주세요!
ㄷ
'ㄷ'만 입력해 주셨는데, 혹시 이전 단계에서 데이터베이스 초기화 명령어를 입력하시다가 오타가 났거나 다음 단계 진행이 막히신 걸까요?
현재 상황(information_schema만 보이는 상태)을 해결하기 위한 **
solaris11.4 mysql5.7 삭제 후 재설치
Solaris 11.4에서 MySQL 5.7을 완전히 삭제하고 깨끗한 상태로 재설치하는 과정을 안내해 드립니다. 설정 파일과 데이터 디렉토리까지 모두 지워야 이전의 설정 오류(비밀번호 문제 등)를 완전히 해결할 수 있습니다.
1. 기존 MySQL 서비스 및 패키지 삭제
먼저 실행 중인 서비스를 중지하고 설치된 패키지를 제거합니다.
- 서비스 중지:
-
Bash
svcadm disable mysql:version_57 - 패키지 제거:
-
Bash
pkg uninstall mysql-57
2. 잔류 데이터 및 설정 파일 완전 삭제 (중요)
패키지만 삭제하면 데이터 파일과 설정 파일은 그대로 남습니다. information_schema만 보이던 문제를 해결하려면 이 디렉토리들을 반드시 수동으로 지워야 합니다.
# 데이터 디렉토리 삭제
rm -rf /var/mysql/5.7/data
# 설정 파일 디렉토리 삭제
rm -rf /etc/mysql/5.7
3. MySQL 5.7 재설치
Solaris 패키지 관리자를 통해 다시 설치합니다.
pkg install mysql-57
4. 데이터베이스 초기화 및 root 비번 없이 설정
설치 직후 바로 서비스를 올리지 말고, 데이터베이스 초기화를 먼저 진행합니다. 이때 --initialize-insecure 옵션을 사용하여 root 비밀번호를 빈 상태로 만드는 것이 가장 편합니다.
- 디렉토리 권한 부여:
-
Bash
chown -R mysql:mysql /var/mysql/5.7/data - 데이터베이스 초기화 (시스템 테이블 생성):
-
Bash
/usr/mysql/5.7/bin/mysqld --initialize-insecure --user=mysql --datadir=/var/mysql/5.7/data
5. 서비스 활성화 및 접속 확인
이제 SMF 서비스를 가동하고 접속합니다.
- 서비스 시작:
-
Bash
svcadm enable mysql:version_57 - 접속 (비밀번호 없음):
-
Bash
/usr/mysql/5.7/bin/mysql -u root
6. (선택) 이제 새 비밀번호 설정
접속에 성공했다면, 원하는 비밀번호로 설정합니다.
ALTER USER 'root'@'localhost' IDENTIFIED BY '원하는비밀번호123!';
FLUSH PRIVILEGES;
팁: 만약 svcadm enable 후에도 서비스가 online이 되지 않는다면, 아래 명령어로 로그를 확인해 보세요.
- svcs -xv mysql:version_57 (서비스 상태 진단)
- tail -f /var/svc/log/application-database-mysql:version_57.log (로그 파일 확인)
재설치 과정 중에 특정 명령어에서 에러가 발생하면 바로 말씀해 주세요!
"mysql> SHOW DATABASES" 하면 information_schema와 data만 보이고 mysql 안보이는데 해결방법은?
SHOW DATABASES; 결과에 information_schema와 **data**만 보인다는 것은, 현재 MySQL이 정상적인 시스템 데이터베이스를 불러오지 못하고 매우 비정상적으로 초기화되었거나, 다른 경로를 데이터베이스로 오인하고 있는 상태입니다. (정상적이라면 mysql, performance_schema, sys가 보여야 합니다.)
Solaris 11.4 환경에서 이를 해결하고 mysql 데이터베이스를 복구하는 확실한 방법입니다.
1. 원인 분석
- 잘못된 초기화: mysqld --initialize 과정이 누락되었거나 실패했습니다.
- 잘못된 경로 인식: 현재 MySQL이 /var/mysql/5.7/data 폴더 전체를 하나의 데이터베이스(이름: data)로 인식하고 있을 가능성이 있습니다.
2. 해결 단계 (완전 초기화 및 복구)
가장 깔끔한 방법은 기존의 꼬인 데이터를 삭제하고 다시 초기화하는 것입니다.
① 서비스 및 프로세스 중지
svcadm disable mysql:version_57
pkill mysqld
② 기존 데이터 정리 (깨끗하게 비우기)
data라는 이름의 이상한 데이터베이스가 생기는 것을 방지하기 위해 디렉토리를 비웁니다.
rm -rf /var/mysql/5.7/data/*
③ 권한 부여 및 다시 초기화
이 단계가 가장 중요합니다. 시스템 테이블(mysql DB 등)을 생성하는 과정입니다.
# 소유권 재확인
chown -R mysql:mysql /var/mysql/5.7/data
# 초기화 실행 (비밀번호 없이 root 생성)
/usr/mysql/5.7/bin/mysqld --initialize-insecure --user=mysql --datadir=/var/mysql/5.7/data
확인 사항: 이 명령어를 실행한 후 /var/mysql/5.7/data 폴더 안에 mysql, performance_schema라는 이름의 폴더들이 생성되었는지 ls -F /var/mysql/5.7/data로 확인해 보세요.
④ 서비스 재시작
svcadm enable mysql:version_57
⑤ 결과 확인
이제 접속해서 다시 확인합니다.
/usr/mysql/5.7/bin/mysql -u root
mysql> SHOW DATABASES;
정상 결과 예시:
- information_schema
- mysql <-- 이놈이 반드시 보여야 합니다!
- performance_schema
- sys
3. 만약 위 방법으로도 안 된다면? (my.cnf 체크)
/etc/mysql/5.7/my.cnf 파일 내에 datadir 설정이 꼬여있을 수 있습니다.
grep "datadir" /etc/mysql/5.7/my.cnf
만약 datadir이 /var/mysql/5.7로 되어 있다면, 뒤에 /data를 붙여 /var/mysql/5.7/data로 수정해 주어야 합니다. (부모 디렉토리를 데이터 디렉토리로 지정하면 지금처럼 data라는 이름의 DB가 목록에 나타나는 현상이 생깁니다.)
다음 단계로 무엇을 도와드릴까요?
- 초기화 명령어 실행 시 에러 메시지가 뜨나요?
- my.cnf 파일의 내용을 확인해 드릴까요?
"host is not allowed to connect to A server"인 경우 server가 host에 접속 허용을 해주는 방법? host ip 등록 방법은?
"Host is not allowed to connect" 에러는 MySQL의 보안 정책상 특정 IP(Host)가 해당 서버에 접근할 권한이 없을 때 발생합니다.
이를 해결하려면 MySQL 서버 내부에서 해당 IP에 대해 접속 권한을 명시적으로 부여해야 합니다.
1. MySQL 접속 및 현재 권한 확인
먼저 서버 로컬에서 root 계정으로 접속하여 현재 어떤 호스트들이 허용되어 있는지 확인합니다.
/usr/mysql/5.7/bin/mysql -u root -p
-- 현재 등록된 유저와 호스트 정보 확인
SELECT User, Host FROM mysql.user;
2. 특정 IP(Host) 접속 허용 방법
Host IP가 192.168.1.50인 사용자가 root 계정으로 접속하게 하려면 아래 명령어를 입력합니다.
-- 1. 특정 IP에 대해 권한 부여 (비밀번호 포함)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.50' IDENTIFIED BY '사용할비밀번호';
-- 2. 변경사항 반영
FLUSH PRIVILEGES;
다양한 호스트 등록 예시
- 모든 IP 허용 (%): 보안상 위험하지만 어디서든 접속 가능하게 할 때 사용합니다.
-
SQL
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '비밀번호'; - 특정 대역폭 허용: 특정 서브넷 내의 모든 IP를 허용할 때 사용합니다.
-
SQL
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY '비밀번호';
3. Solaris 11.4 추가 체크리스트 (네트워크 설정)
권한을 주었는데도 접속이 안 된다면, MySQL 자체가 로컬호스트(127.0.0.1)에서만 신호를 받도록 설정되어 있을 가능성이 큽니다.
① bind-address 설정 확인
/etc/mysql/5.7/my.cnf 파일을 열어 아래 내용을 확인하세요.
# 이 줄이 127.0.0.1로 되어 있다면 주석 처리(#)하거나 0.0.0.0으로 수정
bind-address = 0.0.0.0
수정 후에는 반드시 서비스를 재시작해야 합니다: svcadm restart mysql:version_57
② Solaris 방화벽(IP Filter) 확인
Solaris 자체 방화벽에서 3306 포트가 열려 있는지 확인이 필요할 수 있습니다.
# 방화벽 상태 확인
svcs ipfilter
요약: 등록 절차
- mysql -u root -p 접속
- GRANT ALL PRIVILEGES ON *.* TO '유저명'@'접속할IP' IDENTIFIED BY '비밀번호';
- FLUSH PRIVILEGES;
'정보관리(데이터베이스, DB) > DB' 카테고리의 다른 글
| AI Postgresql pgvector Extension의 설치 및 환경구성 (0) | 2025.11.25 |
|---|---|
| Oracle Database 26ai (0) | 2025.11.25 |
| 대량 데이터에 따른 성능 개선 방 (0) | 2025.11.22 |
| 오픈소스db를 오픈소스 vectordb로 embedding 하는 방법 (0) | 2025.11.14 |
| oracle db를 vectordb로 embedding 하는 방법 (0) | 2025.11.14 |