MySQL 비밀번호 변경 ( root / 유저 )
페이지 정보
본문
1. root 비밀번호를 분실했을 경우
암호 초기화
# killall mysqld (데몬을 모조리 죽입니다)
# find / -name mysql
# cd /usr/local/mysql (mysql 설치된 폴더 이동)
※ mysql 데몬이 죽었기 때문에, 의외로 이거 모르시는 분이 많은데 sql 명령을 넣으려면 sql이 설치된 디렉토리로 가야합니다.
# ./bin/safe_mysqld --skip-grant &
여기까지 진행하면 root 비밀번호가 초기화됩니다. 즉 root 비밀번호가 삭제되는거죠.
2. MySQL 새 암호 넣기
2-1. MySQL 3.x ~ 4.01
# ./bin/mysql (mysql 실행)
mysql>use mysql <- mysql 데이타베이스 연결
mysql>update user set password=password('새암호') where user='root';
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> FLUSH PRIVILEGES; <- 끝에 ; 를 꼭 입력해야합니다.
Query OK, 0 rows affected (0.00 sec)
mysql> exit (끝내기)
2-2. MySQL 4.1 ~ MySQL 5.6
MySQL 4.1 이상 버전에서는 비밀번호를 해쉬알고리즘을 기반으로한 인증 프로토콜을 사용합니다.
그리고 해당 기능이 하위버전의 Client와 호환이 되지 않기에 서버를 4.1이상으로 업그레이드를 한 후에는 다음과 같은 명령어를 사용하여 인증이 가능토록 해야 합니다.
# ./bin/mysql (mysql 실행)
mysql>use mysql <- mysql 데이타베이스 연결
mysql> update user set password=OLD_PASSWORD('새암호') WHERE user = 'root';
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2-3. MySQL 5.7 이상
2-3.1. 초기 root 비밀번호 변경할때
mysql> alter user 'root'@'localhost' identified by '새비밀번호';
Query OK, 0 rows affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
2-3-2. root 비밀번호 변경할때
user 테이블에서 password 항목이 사라졌습니다.
password 필드명이 authentication_string 으로 변경되었습니다.
mysql> update user set authentication_string=password('암호') where user='root';
mysql> flush privileges;
3. MariaDB 새 암호 넣기
3-1. MariaDB 10.1.20 이상
[root@localhost ~]$ mysql --version
mysql Ver 15.1 Distrib 10.1.25-MariaDB, for Linux (x86_64) using readline 5.1
3-2. MariaDB 로그인
[root@localhost ~]# mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 802
Server version: 10.1.25-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [mysql]>
3-3. mysql 로 전환
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]>
3-4. root 비밀번호 변경
3-4-1-1. MariaDB 10.1.20 이상 일때
MariaDB [mysql] > alter user 'root'@'localhost' identified by 'new_password';
3-4-2. MariaDB 10.1.20 이하 일때
MariaDB [mysql] > set password for 'root'@'localhost' = password('new_password');
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> exit;
3-5. user 비밀번호 변경
update 는 password validation 미적용됨
MariaDB [(none)]> update mysql.user set password=password('new_password') where user='아이디';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [(none)]> select host,user from mysql.user;
+-----------------------+--------+
| host | user |
+-----------------------+--------+
| localhost | root |
| localhost.localdomain | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | |
| localhost.localdomain | |
| localhost | 아이디1 |
| % | 아이디2 |
+-----------------------+--------+
8 rows in set (0.00 sec)
MariaDB [(none)]> select user(), current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
MariaDB [(none)]> show variables like 'skip_networking';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]>
관련자료
http://jmnote.com/wiki/MySQL_root_패스워드_분실
https://www.digitalocean.com/community/tutorials/how-to-reset-your-mysql-or-mariadb-root-password
http://sarc.io/index.php/mariadb/802-maria
http://greatps1215.tistory.com/11
https://opensrc.tistory.com/207
암호 초기화
# killall mysqld (데몬을 모조리 죽입니다)
# find / -name mysql
# cd /usr/local/mysql (mysql 설치된 폴더 이동)
※ mysql 데몬이 죽었기 때문에, 의외로 이거 모르시는 분이 많은데 sql 명령을 넣으려면 sql이 설치된 디렉토리로 가야합니다.
# ./bin/safe_mysqld --skip-grant &
여기까지 진행하면 root 비밀번호가 초기화됩니다. 즉 root 비밀번호가 삭제되는거죠.
2. MySQL 새 암호 넣기
2-1. MySQL 3.x ~ 4.01
# ./bin/mysql (mysql 실행)
mysql>use mysql <- mysql 데이타베이스 연결
mysql>update user set password=password('새암호') where user='root';
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> FLUSH PRIVILEGES; <- 끝에 ; 를 꼭 입력해야합니다.
Query OK, 0 rows affected (0.00 sec)
mysql> exit (끝내기)
2-2. MySQL 4.1 ~ MySQL 5.6
MySQL 4.1 이상 버전에서는 비밀번호를 해쉬알고리즘을 기반으로한 인증 프로토콜을 사용합니다.
그리고 해당 기능이 하위버전의 Client와 호환이 되지 않기에 서버를 4.1이상으로 업그레이드를 한 후에는 다음과 같은 명령어를 사용하여 인증이 가능토록 해야 합니다.
# ./bin/mysql (mysql 실행)
mysql>use mysql <- mysql 데이타베이스 연결
mysql> update user set password=OLD_PASSWORD('새암호') WHERE user = 'root';
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2-3. MySQL 5.7 이상
2-3.1. 초기 root 비밀번호 변경할때
mysql> alter user 'root'@'localhost' identified by '새비밀번호';
Query OK, 0 rows affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
2-3-2. root 비밀번호 변경할때
user 테이블에서 password 항목이 사라졌습니다.
password 필드명이 authentication_string 으로 변경되었습니다.
mysql> update user set authentication_string=password('암호') where user='root';
mysql> flush privileges;
3. MariaDB 새 암호 넣기
3-1. MariaDB 10.1.20 이상
[root@localhost ~]$ mysql --version
mysql Ver 15.1 Distrib 10.1.25-MariaDB, for Linux (x86_64) using readline 5.1
3-2. MariaDB 로그인
[root@localhost ~]# mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 802
Server version: 10.1.25-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [mysql]>
3-3. mysql 로 전환
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]>
3-4. root 비밀번호 변경
3-4-1-1. MariaDB 10.1.20 이상 일때
MariaDB [mysql] > alter user 'root'@'localhost' identified by 'new_password';
3-4-2. MariaDB 10.1.20 이하 일때
MariaDB [mysql] > set password for 'root'@'localhost' = password('new_password');
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> exit;
3-5. user 비밀번호 변경
update 는 password validation 미적용됨
MariaDB [(none)]> update mysql.user set password=password('new_password') where user='아이디';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [(none)]> select host,user from mysql.user;
+-----------------------+--------+
| host | user |
+-----------------------+--------+
| localhost | root |
| localhost.localdomain | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | |
| localhost.localdomain | |
| localhost | 아이디1 |
| % | 아이디2 |
+-----------------------+--------+
8 rows in set (0.00 sec)
MariaDB [(none)]> select user(), current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
MariaDB [(none)]> show variables like 'skip_networking';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]>
관련자료
http://jmnote.com/wiki/MySQL_root_패스워드_분실
https://www.digitalocean.com/community/tutorials/how-to-reset-your-mysql-or-mariadb-root-password
http://sarc.io/index.php/mariadb/802-maria
http://greatps1215.tistory.com/11
https://opensrc.tistory.com/207
댓글목록
등록된 댓글이 없습니다.