루트 비밀번호를 설정 한 후에 왜 MYSQL에서 비밀번호없이 로그인 할 수 있습니까?


10

루트 비밀번호를 설정 한 후에 왜 MYSQL이 명령 행에서 비밀번호없이 로그인 할 수 있습니까? 루트 유닉스 프롬프트에서 "mysql"을 입력 할 수 있으며 암호를 요구하지 않고 여전히 루트 액세스를 허용합니다. "mysql -u root"가 왜 계정에 설정 한 비밀번호를 요구하지 않는지 이해할 수 없습니다.

또한 원격 컴퓨터에서 myroot에 'root'로 로그인 할 수 없습니다. 아래에서 올바르게 구성하지 않았습니까? "호스트 ...이 MySQL 서버에 연결할 수 없습니다. '%'에 대해 구성하지 않았습니까?

내 사용자 테이블은 다음과 같습니다.

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

답변:


4

비밀번호는 'root'@'localhost'사용자 항목 에 설정되어 있지만 항목 에는 설정 되지 않은 'root'@'%'것 같습니다. 이를 기반으로 비밀번호가없는 인증이 허용됩니다.

보안을 위해 어디에서나 루트 액세스를 허용하도록 재고하십시오. 필요한 경우 localhost 사양을 제거하십시오.

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

그리고 'root'@'%'사용자 의 비밀번호를 설정하십시오 :

set password for 'root'@'%' = password('passwordhere');

그것은 내가 필요로하는 전부 였고 그 후에도 일부였습니다. 감사. 제거하기에 안전한지 또는 안전하지 않은지 확실하지 않아서 내 질문에 대답했습니다. 좋은 대답입니다. :-)
djangofan

4

대답은 해당 표에 나와 있습니다. 비밀번호가없는 "루트"줄을 제거해야합니다.

또한 사용자 또는 패스를 사용하지 않을 때 어디서나 (?!?!) 연결을 허용하는 것처럼 보입니다. 아마 나쁜 생각입니다. 나는 다음과 같은 것을 할 것이다 :

mysql> use mysql;
mysql> delete from user where password = "";

2

개인 정보 보호를 잊지 마십시오. 또는 비밀번호없이 로그인 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.