"MySQL root 패스워드 분실"의 두 판 사이의 차이

 
(사용자 8명의 중간 판 28개는 보이지 않습니다)
6번째 줄: 6번째 줄:


==mysqld 중지==
==mysqld 중지==
<source lang='dos'>
<source lang='bash'>
[root@localhost ~]# service mysqld stop
systemctl stop mysqld    # CentOS
Stopping MySQL:                                            [ OK  ]
systemctl stop mysql    # Ubuntu
</source>
<source lang='console'>
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]#
</source>
</source>


==mysqld_safe 실행==
==mysqld_safe 실행==
<source lang='dos'>
* 인증 생략 옵션 + 안전모드로 데몬 실행
[root@localhost ~]# /usr/bin/mysqld_safe --skip-grant &
<source lang='bash'>
/usr/bin/mysqld_safe --skip-grant &
/usr/bin/mysqld_safe --skip-grant-tables &
</source>
<source lang='console'>
[root@localhost ~]# /usr/bin/mysqld_safe --skip-grant-tables &
[1] 32055
[1] 32055
Starting mysqld daemon with databases from /var/lib/mysql
Starting mysqld daemon with databases from /var/lib/mysql
20번째 줄: 29번째 줄:


==새 패스워드 지정==
==새 패스워드 지정==
mysql 콘솔로 들어가자.<ref>ERROR 1049 (42000): Unknown database 'mysql' 라고 나오면서 안들어 가지는 경우가 있을 수 있는데, 아직 최초 root 패스워드 지정인 안된 상태이다. 이 때는 본 문서를 따르지 말고 <code>service mysqld restart</code>한다. 그러면 mysqladmin을 통한 패스워드 설정 방법이 나올 것이다.</ref>
mysql 콘솔로 들어가자.<ref>ERROR 1049 (42000): Unknown database 'mysql' 라고 나오면서 안들어 가지는 경우가 있을 수 있는데, mysql 설치 이후 한번도 root 패스워드를 지정하지 않은 상태이다. 이 때는 본 문서를 따르지 말고 <code>service mysqld restart</code>한다. 그러면 mysqladmin을 통한 패스워드 설정 방법이 나올 것이다.</ref>
<source lang='bash'>
<source lang='bash'>
/usr/bin/mysql -uroot mysql
/usr/bin/mysql -u root mysql
</source>
</source>
다음 SQL 명령어를 입력하여 원하는 패스워드로 변경한다.
다음 SQL 명령어를 입력하여 원하는 패스워드로 변경한다.
<source lang='sql'>
{{소스헤더|MySQL 5.7.6 이상}}
update user set password=password('패스워드') where user='root';  
<source lang='mysql'>
flush privileges;  
ALTER USER 'root'@'localhost' IDENTIFIED BY '패스워드';
quit
</source>
{{소스헤더|MySQL 5.7.5 이하}}
<source lang='mysql'>
-- MySQL 5.6에서 성공 ★
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('패스워드');
</source>
<source lang='mysql'>
-- MySQL 5.7 이상
UPDATE mysql.user SET authentication_string=PASSWORD('패스워드') WHERE user='root' AND Host='localhost';
FLUSH PRIVILEGES;
</source>
<source lang='mysql'>
-- MySQL 5.7 미만
UPDATE mysql.user SET password=PASSWORD('패스워드') WHERE user='root' AND Host='localhost';
FLUSH PRIVILEGES;
</source>
</source>


;실행 예시
;실행 예시
<source lang='dos'>
<source lang='console'>
[root@localhost ~]# /usr/bin/mysql -uroot mysql
[root@localhost ~]# /usr/bin/mysql -uroot mysql
Reading table information for completion of table and column names
Reading table information for completion of table and column names
56번째 줄: 80번째 줄:
==mysqld 재시작==
==mysqld 재시작==
이제 패스워드를 입력해야만 mysql을 사용할 수 있도록 하기 위해, mysqld를 재시작한다.
이제 패스워드를 입력해야만 mysql을 사용할 수 있도록 하기 위해, mysqld를 재시작한다.
<source lang='dos'>
<source lang='bash'>
[root@localhost ~]# service mysqld restart
systemctl restart mysqld    # CentOS
STOPPING server from pid file /var/run/mysqld/mysqld.pid
systemctl restart mysql    # Ubuntu
120229 13:08:54  mysqld ended
</source>
 
<source lang='console'>
Stopping MySQL:                                            [ OK  ]
[root@localhost ~]# systemctl restart mysqld
Starting MySQL:                                            [  OK  ]
[root@localhost ~]#
[1]+  Done                    /usr/bin/mysqld_safe --skip-grant
[1]+  Done                    /usr/bin/mysqld_safe --skip-grant
</source>
</source>
72번째 줄: 96번째 줄:
*[[MySQL 패스워드 초기설정 실패]]
*[[MySQL 패스워드 초기설정 실패]]


==주석==
==참고==
<references/>
* https://www.cyberciti.biz/faq/mysql-change-user-password/
*http://oparrow.tistory.com/entry/MySQL-root-password-%EC%9E%8A%EC%96%B4%EB%B2%84%EB%A0%B8%EC%9D%84%EB%95%8C
 
<!--
[[/usr/bin/mysqld_safe 없이 systemctl로 MySQL 패스워드 재설정]]라는
문서로 따로 만들면 어떨까요?
 
=== centos 7 & mysql 5.7 환경에서 /usr/bin/mysqld_safe 을 찾을 수 없는 경우 ===
systemctl 을 활용하여 리셋 하는 방법이 있음.
<source>
1. Stop mysql:
systemctl stop mysqld
 
2. Set the mySQL environment option
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
 
3. Start mysql usig the options you just set
systemctl start mysqld
 
4. Login as root
mysql -u root


==참고 자료==
5. Update the root user password with these mysql commands
*http://oparrow.tistory.com/entry/MySQL-root-password-%EC%9E%8A%EC%96%B4%EB%B2%84%EB%A0%B8%EC%9D%84%EB%95%8C
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
mysql> FLUSH PRIVILEGES;
mysql> quit
 
6. Stop mysql
systemctl stop mysqld
7. Unset the mySQL envitroment option so it starts normally next time
systemctl unset-environment MYSQLD_OPTS
8. Start mysql normally:
systemctl start mysqld
Try to login using your new password:
7. mysql -u root -p


</source>
출처: <https://stackoverflow.com/questions/33510184/change-mysql-root-password-on-centos7>
-->
[[분류: 패스워드]]
[[분류: 패스워드]]
[[분류: MySQL]]
[[분류: MySQL]]

2020년 4월 24일 (금) 16:15 기준 최신판

MySQL 초기 패스워드 지정
MySQL root 패스워드 분실
MySQL root 패스워드 초기화
MySQL root 패스워드 재설정

1 mysqld 중지[ | ]

systemctl stop mysqld    # CentOS
systemctl stop mysql     # Ubuntu
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]#

2 mysqld_safe 실행[ | ]

  • 인증 생략 옵션 + 안전모드로 데몬 실행
/usr/bin/mysqld_safe --skip-grant &
/usr/bin/mysqld_safe --skip-grant-tables &
[root@localhost ~]# /usr/bin/mysqld_safe --skip-grant-tables &
[1] 32055
Starting mysqld daemon with databases from /var/lib/mysql

→ 이제 패스워드 없이 mysql에 접속할 수 있게 되었다.[1]

3 새 패스워드 지정[ | ]

mysql 콘솔로 들어가자.[2]

/usr/bin/mysql -u root mysql

다음 SQL 명령어를 입력하여 원하는 패스워드로 변경한다.

MySQL 5.7.6 이상
ALTER USER 'root'@'localhost' IDENTIFIED BY '패스워드';
MySQL 5.7.5 이하
-- MySQL 5.6에서 성공 ★
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('패스워드');
-- MySQL 5.7 이상
UPDATE mysql.user SET authentication_string=PASSWORD('패스워드') WHERE user='root' AND Host='localhost';
FLUSH PRIVILEGES;
-- MySQL 5.7 미만
UPDATE mysql.user SET password=PASSWORD('패스워드') WHERE user='root' AND Host='localhost';
FLUSH PRIVILEGES;


실행 예시
[root@localhost ~]# /usr/bin/mysql -uroot mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> update user set password=password('P@ssw0rd') where user='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

4 mysqld 재시작[ | ]

이제 패스워드를 입력해야만 mysql을 사용할 수 있도록 하기 위해, mysqld를 재시작한다.

systemctl restart mysqld    # CentOS
systemctl restart mysql     # Ubuntu
[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]# 
[1]+  Done                    /usr/bin/mysqld_safe --skip-grant
→ 백그라운드로 실행 중이던 무인증 안전모드 mysqld 프로세스가 중지되고 정상모드 mysqld로 재시작되었다.

5 같이 보기[ | ]

6 참고[ | ]

  1. 로컬에서는 인증 없이 mysql의 root 권한을 사용가능하게 됨
  2. ERROR 1049 (42000): Unknown database 'mysql' 라고 나오면서 안들어 가지는 경우가 있을 수 있는데, mysql 설치 이후 한번도 root 패스워드를 지정하지 않은 상태이다. 이 때는 본 문서를 따르지 말고 service mysqld restart한다. 그러면 mysqladmin을 통한 패스워드 설정 방법이 나올 것이다.
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}