

서버를 껐다 켰다 하면서 sql의 상태를 확인 못한 내 잘못..
비밀번호를 바꾸지 않았는데 갑자기 원격 접속이 안된다.
급하게 ec2에 들어가서 확인을 해보니 해당 비밀번호로 접속이 불가능한 상황이었다.
초기화를 진행하도록 했다.
밑에는 root 계정 초기화를 다룬 블로그 내용이다.
https://www.infracody.com/2022/06/mysql-root-password-reset.html
MySQL/MariaDB root 비밀번호 초기화 방법
mysqld_safe 명령어 없이 MySQL root 비밀번호를 초기화하는 방법을 알려드립니다. systemd 환경 변수를 설정하고 MySQL 서비스를 재시작하는 과정을 따라하세요.
www.infracody.com
서버 CentOS7
mysql은 8을 사용하고 있다. 리눅스 버전과 mysql 버전에 따라 명령어가 다르기 때문에 유의해야 한다.
1. mysql 종료
sudo systemctl stop mysqld
2. root 계정으로 로그인 할 시 비밀번호 skip하고 접속할 수 있도록 환경 변수를 추가
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
3. mysql 서비스 시작
sudo systemctl start mysqld
4. mysql uroot 계정으로 로그인 uroot이다 root 안된다. root로 하면 권한이 없다.
mysql -uroot
5. 권한을 새로고침하고 > flush privileges
비밀번호를 바꾸자 주의할 점은 'localhost' 부분이다. 만약 mysql이 로컬에서 켜져있다면 상관없지만 ec2에서 돌리고 있고 원격으로 접속해야 하므로 '127.0.0.1' 로 수정해주자. 그렇지 않다면 mysql workbench에서 로그인 시 에러가 나타난다.
에러내용 : lost connection to mysql server at 'reading initial communication packet'
MySQL에서는 localhost와 127.0.0.1이 서로 다르게 취급됩니다. localhost를 사용하여 MySQL에 접속하려고 하면, MySQL은 UNIX 소켓(즉, 동일한 시스템 내에서의 통신 방법)을 사용합니다. 반면에 127.0.0.1을 사용하면 TCP/IP 네트워킹(즉, 네트워크를 통한 통신 방법)을 사용합니다.
FLUSH PRIVILEGES;
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;
만약 이때 mysql에서 설정한 비밀번호 조건을 충족하지 못한다면 에러가 뜨는데
비밀번호 조건을 변경하면 된다.
set global validate_password.policy=LOW;
default 비밀번호 길이는 8자리이다. 세부사항 확인은
show variables like 'validate_password%';
6. mysql shell 종료
quit
7. mysql 서비스 중지
sudo systemctl stop mysqld
8. mysql 환경 변수 초기화
sudo systemctl unset-environment MYSQLD_OPTS
9. mysql 서비스 시작
sudo systemctl start mysqld
이후 workbench에서 제대로 접속하는 것을 확인할 수 있었다.
'프로젝트 우당탕탕' 카테고리의 다른 글
텔레그램 봇으로 스프링 스케쥴링 제대로 수행되는지 모니터링 하기 (0) | 2024.02.04 |
---|

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!