MySQL 및 MariaDB 루트 암호 설정, 변경 및 재설정
이 자습서에서는 MySQL 또는 MariaDB 루트 암호를 설정, 변경 및 재설정(암호를 잊어버린 경우)하는 방법을 설명합니다. 몇 번이고 mysqladmin: localhost에서 서버에 연결 실패 오류: 사용자 root@localhost(암호 사용: YES)에 대한 액세스가 거부되었습니다. 그래서 MySQL 관련 암호 문제를 해결하는 방법을 상기시켜줄 때라고 생각했습니다. 빠른 수정 MySQL 루트 암호를 재설정하는 방법을 찾고 있다면 이 튜토리얼의 맨 아래에서 찾을 수 있습니다. 이 튜토리얼은 모든 주요 Linux 배포판과 호환됩니다. CentOS, 데비안, 페도라, 우분투.
mysqladmin 명령을 사용하여 루트 암호 변경
방법 1 - 처음으로 루트 암호 설정
MySQL에 대해 루트 암호를 설정한 적이 없다면 서버는 루트로 연결하기 위해 암호를 전혀 요구하지 않습니다. 처음으로 루트 비밀번호를 설정하려면 다음과 같이 쉘 프롬프트에서 mysqladmin 명령을 사용하십시오.
mysqladmin -u root password newpass
루트 비밀번호를 새 비밀번호 newpass로 변경(또는 업데이트)하려면 다음 명령을 사용해야 합니다.
mysqladmin -u root -p password newpass
Enter password:
당신이 얻을 경우 ...
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
그런 다음 MySQL 암호를 복구하는 방법에 대한 아래 지침을 따르십시오.
위의 예에서 암호라는 단어는 명령의 일부이므로 암호로 바꾸지 마십시오. newpass라는 단어가 새 비밀번호입니다.
MySQL 또는 MariaDB 루트 암호를 처음 설정할 때 mysqladmin 명령을 사용하는 대신 mysql_secure_installation 명령을 사용하는 방법이 있습니다. 이 명령은 이전 및 새 MySQL 루트 암호를 요청할 뿐만 아니라 테스트 데이터베이스 비활성화와 같은 다른 보안 설정도 수행합니다.
해당 명령을 사용하는 방법은 다음과 같습니다.
mysql_secure_installation
아래와 같이 질문에 답하십시오.
Change the root password? [Y/n] <-- y
New password: <-- Enter a new MySQL root password
Re-enter new password: <-- Repeat the MySQL root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
위의 답변은 권장 사항이며 다른 설정을 자유롭게 선택할 수 있습니다. 테스트 데이터베이스를 유지하거나 루트 사용자에 대한 원격 액세스가 필요한 경우. 참고: PHPMyAdmin을 원격으로 사용하기 위해 원격 액세스가 필요하지 않습니다.
다른 사용자의 MySQL 비밀번호 변경
일반 사용자 암호를 변경하려면 다음을 입력해야 합니다.
mysqladmin -u user-name -p password newpass
이 예제의 변수는 다음과 같습니다.
- user-name: 암호를 변경하려는 사용자의 사용자 이름입니다.
- newpass: 새 비밀번호
비밀번호라는 단어는 변수가 아니므로 바꾸지 마세요. 이 명령은 이전 암호를 묻습니다.
방법 2 - 비밀번호 업데이트 또는 변경
MySQL은 MySQL 데이터베이스 내부의 사용자 테이블에 사용자 이름과 암호를 저장합니다. 다음 방법을 사용하여 비밀번호를 직접 업데이트하거나 비밀번호를 변경할 수 있습니다.
1) MySQL 서버에 로그인하고 쉘 프롬프트에서 다음 명령을 입력합니다.
mysql -u root -p
2) mysql 데이터베이스를 사용합니다(mysql> 프롬프트에 명령 입력).
mysql> use mysql;
3) 사용자의 비밀번호 변경:
MySQL 5.7.5 이하
mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
MySQL 5.7.6 이상
mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");
4) 재장전 권한:
mysql> flush privileges;
mysql> quit
이 방법은 PHP 또는 Perl 스크립팅을 사용하는 동안 사용해야 합니다.
잃어버린 MySQL 루트 암호 복구
다음 5가지 간단한 단계를 통해 MySQL 데이터베이스 서버 암호를 복구할 수 있습니다.
1단계: MySQL 서버 프로세스를 중지합니다.
2단계: --skip-grant-tables 옵션을 사용하여 MySQL(mysqld) 서버/데몬 프로세스를 시작하면 비밀번호를 묻는 메시지가 표시되지 않습니다.
3단계: 루트 사용자로 MySQL 서버에 연결합니다.
4단계: 새 루트 암호를 설정합니다.
5단계: MySQL 서버를 종료하고 다시 시작합니다.
다음은 각 단계에 대해 입력해야 하는 명령입니다(루트 사용자로 로그인).
1단계: MySQL 서비스 중지:
service mysql stop
산출:
Stopping MySQL database server: mysqld.
2단계: 암호 없이 MySQL 서버 시작:
mysqld_safe --skip-grant-tables &
산출:
[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started
3단계: MySQL 클라이언트를 사용하여 MySQL 서버에 연결합니다.
mysql -u root
산출:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 56299
Server version: 5.6.34-1 (Debian)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
4단계: 새 MySQL 루트 사용자 비밀번호를 설정합니다.
MySQL 5.7.5 이하
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
MySQL 5.7.6 이상
mysql> use mysql;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("newpass");
mysql> flush privileges;
mysql> quit
5단계: MySQL 서버를 중지합니다.
service mysql stop
산출:
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-tables
또는 위의 명령이 MySQL을 중지하지 못하는 경우 이 명령을 사용하여 MySQL을 중지합니다(작동하는 명령은 MySQL 버전에 따라 다름).
killall mysqld
출력은 Linux 배포판에 따라 다를 수 있습니다. 오류를 보고하지 않는 한 걱정하지 마십시오. MySQL 서버를 시작하고 테스트합니다.
service mysql start
mysql -u root -p