미리 해시된 비밀번호를 사용하여 MySQL 사용자의 비밀번호를 어떻게 설정할 수 있나요?
저는 MySQL 5.1.73 데이터베이스 서버를 가지고 있습니다.
MySQL 문서에 따르면 최신 버전의 MySQL에서는 다음과 같이 미리 해시된 비밀번호를 사용하여 사용자를 생성합니다.
CREATE USER 'ans'@'localhost'
IDENTIFIED BY PASSWORD 'hash_string'
더 이상 사용되지 않으며 향후 MySQL 릴리스에서는 제거될 예정입니다.
그러나 이를 수행하는 새로운 방법이 무엇인지 알 수 없습니다.
우리는 사용구두 수선공데이터베이스를 설정하기 위해 스크립트에 일반 텍스트 비밀번호가 없어도 데이터베이스에 필요한 계정과 사용할 비밀번호를 미리 채우고 싶습니다. 나는 이것을 도핑하면 효과가 있을 것이라고 생각했을 것입니다.
update mysql.user
set password = '*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB'
where user = 'ans';
하지만 내 테스트에서는 실제로 MySQL 로그인 비밀번호가 변경되지 않았습니다.
mysql> create user 'ans'@'localhost' identified by 'foo';
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| ans | localhost | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
+------+-----------+-------------------------------------------+
mysql> update mysql.user set password = password('bar') where user = 'ans';
Query OK, 1 row affected (0.00 sec)
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| ans | localhost | *E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB |
+------+-----------+-------------------------------------------+
mysql> quit
$ mysql -uans -pbar
ERROR 1045 (28000): Access denied for user 'ans'@'localhost' (using password: YES)
$ mysql -uans -pfoo
Welcome to the MySQL monitor. Commands end with ; or \g.
답변1
비밀번호를 해킹하면 mysql.user
다음을 실행해야 합니다.
mysql> FLUSH PRIVILEGES;
에 따르면FLUSH에 대한 MySQL 문서
특권
mysql 데이터베이스의 그랜트 테이블에서 권한을 다시 로드합니다.
서버는 GRANT, CREATE USER, CREATE SERVER 및 INSTALL PLUGIN 문의 결과로 정보를 메모리에 캐시합니다. 이 메모리는 해당 REVOKE, DROP USER, DROP SERVER 및 UNINSTALL PLUGIN 문에 의해 해제되지 않으므로 캐싱을 유발하는 문 인스턴스를 많이 실행하는 서버의 경우 메모리 사용량이 증가합니다. 이 캐시된 메모리는 FLUSH PRIVILEGES를 사용하여 해제할 수 있습니다.
이제 비밀번호를 적용하려면 MySQL을 다시 시작해야 합니다.
답변2
지금은 약간 오래되었지만 나중에 참조할 수 있도록 SHOW CREATE USER 'ans'@'localhost'
명령을 사용하면 새 구문의 형식이 다음과 같은 것을 볼 수 있습니다.
CREATE USER 'ans'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT