MySQL 5.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)
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AWS EC2 RDS LAMP 개발 환경 구축시작된 EC2 인스턴스에 SSH 연결되어 있는지 successfully가 출력되면 패스워드가 올바르게 변경되고 있습니다. 설치 자동 시작 설정 일본어화와 타임존 [도쿄] 설정 설치 시간대 [도쿄] 설정 .htacce...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.