MySQL 5.7 루트 비밀 번 호 를 잊 고 수정 한 자세 한 튜 토리 얼

7399 단어 mysql5.7루트 암호
머리말
지금까지 MySQL 의 응용 과 학습 환경 은 모두 MySQL 5.6 과 이전 버 전 이 었 고 새로운 버 전의 MySQL 5.7 의 변화 와 새로운 특성 에 관심 을 가지 지 않 았 다.오늘 루트 비밀 번 호 를 잊 어 버 린 것 을 처리 해 주 었 을 때,이전의 방법 이 효과 가 없 음 을 발견 하 였 다.
구체 적 인 상황 은 다음 과 같다.
사례 환경 은 다음 과 같다.
        운영 체제:Red Hat Enterprise Linux Server 릴 리 스 6.6(산티아고)
        데이터베이스 버 전:5.7.18 MySQL Community Server(GPL)
비밀 번 호 를 잊 고 잘못된 비밀 번 호 를 입력 할 때 다음 오류 가 발생 했 습 니 다.

[root@mytestlnx02 ~]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@mytestlnx02 ~]#
MySQL 서비스 가 시작 되 었 는 지 확인 하고 시작 하면 MySQL 서 비 스 를 닫 습 니 다.

[root@mytestlnx02 ~]# ps -ef | grep -i mysql
root  22972  1 0 14:18 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 23166 22972 0 14:18 pts/0 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root  23237 21825 0 14:22 pts/0 00:00:00 grep -i mysql
[root@mytestlnx02 ~]# service mysqld stop
Stopping mysqld: [ OK ]
[root@mytestlnx02 ~]# 
MySQL 의 my.cnf 설정 파일 을 찾 았 습 니 다./etc/my.cnf(일부 버 전 은/etc/mysql/my.cnf)에 다음 정 보 를 추가 합 니 다.

[mysqld] 

skip-grant-tables 
그 다음 에 MySQL 을 시작 하고 MySQL 에 들 어간 후에 루트 비밀 번 호 를 수정 합 니 다.작업 과정 에서 만 났 습 니 다ERROR 1054 (42S22): Unknown column 'password' in 'field list'user 표 의 표 구 조 를 찾 아 보 니 MySQL 5.7 에서 user 표 는 Password 필드 가 없 었 습 니 다.암호 화 된 사용자 암 호 는 authentication 에 저 장 됩 니 다.string 필드.
구체 적 인 조작 과정 은 다음 과 같다.

[root@mytestlnx02 ~]# service mysqld start
Starting mysqld: [ OK ]
[root@mytestlnx02 ~]# mysql -u root 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.18 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2017, 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> 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
mysql> update user set password=PASSWORD('Kd8k&dfdl023')
 -> where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> update mysql.user set authentication_string=password('Kd8k&dfdl023') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit

my.cnf 파일 에서 방금 가입 한 줄 의"skip-grant-tables"주석 을 삭제 하거나 삭제 합 니 다.그리고 MySQL 서 비 스 를 다시 시작 하려 면 명령 을 실행 해 야 합 니 다set password=password('newpassword');문제 가 해결 되 었 습 니 다.

[root@mytestlnx02 ~]# service mysqld start
Starting mysqld: [ OK ]
[root@mytestlnx02 ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.18
 
Copyright (c) 2000, 2017, 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> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> set password=password('Kd8k&dfdl023');
Query OK, 0 rows affected, 1 warning (0.00 sec)
뒤에 관련 자 료 를 조회 해 보 니 MySQL 5.7 이 안전 에 있어 서 새로운 특성 을 가지 고 있 음 을 발견 했다.
1.사용자 표 my sql.user 의 plugin 필드 가 비어 있 으 면 안 됩 니 다.기본 값 은 my sql 입 니 다.native_password,mysql 가 아 닌old_password,오래된 암호 형식 을 지원 하지 않 습 니 다.

2.비밀번호 만 료 메커니즘 을 추가 하고 만 료 후 비밀 번 호 를 수정 해 야 합 니 다.그렇지 않 으 면 비활성화 되 거나 샌 드 박스 모드 에 들 어 갈 수 있 습 니 다.암호 만 료 를 인자 default 로 사용 할 지 여부password_lifetime 제어.

mysql> show variables like 'default_password_lifetime';
+---------------------------+-------+
| Variable_name    | Value |
+---------------------------+-------+
| default_password_lifetime | 0  |
+---------------------------+-------+
1 row in set (0.00 sec)
 
mysql>
3:암호 보안 등급 과 암호 복잡 도 설정 을 추 가 했 습 니 다.매개 변 수 는 다음 과 같 습 니 다.

mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name      | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file |  |
| validate_password_length    | 8  |
| validate_password_mixed_case_count | 1  |
| validate_password_number_count  | 1  |
| validate_password_policy    | MEDIUM |
| validate_password_special_char_count | 1  |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
4.mysql 사용install_db 초기 화 시 기본 값 은 무 작위 암 호 를 자동 으로 생 성 합 니 다.무 작위 암 호 는/var/log/mysqld.log 에 두 고 만 들 지 않 습 니 다[email protected]@localhost이외 의 다른 계 정 도 test 라 이브 러 리 를 만 들 지 않 습 니 다.

[root@mytestlnx02 mysql]# yum localinstall mysql-community-{server,client,common,libs}-* 
[root@mytestlnx02 mysql]# rpm -qa | grep -i mysql
mysql-community-client-5.7.18-1.el6.i686
mysql-community-libs-5.7.18-1.el6.i686
perl-DBD-MySQL-4.013-3.el6.x86_64
mysql-community-server-5.7.18-1.el6.i686
mysql-community-common-5.7.18-1.el6.i686
mysql-community-libs-compat-5.7.18-1.el6.i686
[root@mytestlnx02 mysql]# service mysqld start
 
Initializing MySQL database: [ OK ]
Installing validate password plugin: [ OK ]
Starting mysqld: [ OK ]
[root@mytestlnx02 mysql]# 
[root@mytestlnx02 mysql]# grep 'temporary password' /var/log/mysqld.log
2017-05-05T06:10:57.802143Z 1 [Note] A temporary password is generated for root@localhost: w99s(m-q_ML:
 
mysql> select user ,host from user;
+-----------+-----------+
| user  | host  |
+-----------+-----------+
| mysql.sys | localhost |
| root  | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기