익명 로그인을 어떻게 비활성화합니까?


9

MySQL 문서 에 따르면 비밀번호를 추가하거나 익명 계정을 제거하여 MySQL 서버를 강화할 수 있습니다.

클라이언트가 비밀번호없이 익명 사용자로 연결하지 못하게하려면 각 익명 계정에 비밀번호를 지정하거나 계정을 제거해야합니다.

강화하기 전에 내 사용자 테이블은 다음과 같습니다.

mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| root             | gitlab    |                                           |
| root             | 127.0.0.1 |                                           |
| root             | ::1       |                                           |
|                  | localhost |                                           |
|                  | gitlab    |                                           |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

사용자 테이블이 다음과 같이 보이도록 모든 익명 계정을 제거했습니다. (나는 꼭두각시를 사용하여 사용자를 관리하고 있지만 꼭두각시는 효과적으로 DROP USER명령을 수행합니다 ).

mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

사용자 이름이나 비밀번호없이 테스트 시스템에 여전히 로그인 할 수있는 이유는 무엇입니까?
원치 않는 사용자가 로그인하지 못하도록하려면 어떻게해야합니까?

root@gitlab:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 98
Server version: 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
....
mysql> 

업데이트 : 방금 비밀번호를 입력하지 않고 루트로 로그인 할 수 있음을 발견했습니다.

업데이트 2 : 좋은 정보가 있지만이 문제를 해결하지 못하는 이 질문 을 발견 했습니다 .

익명 사용자가 없습니다.

mysql> select user,host,password from mysql.user where user='';
Empty set (0.00 sec)

로 로그인합니다 root@localhost.

mysql> select USER(),CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+ 

기본 비밀번호가 없거나 my.cnf에 skip-grant-tables가 정의되어 있습니다.

root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'skip-grant-tables'|wc -l
0
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'pass'|wc -l
0

업데이트 3 :

꼭두각시로 이러한 단계를 수행하려고 시도했습니다 (자동으로 플러시 권한을 수행해야 함). 또한 수동으로 권한을 플러시하고 mysql을 다시 시작하려고했습니다.

Update4 :
또한 mysql 루트 암호와 플러시 권한을 변경하려고했습니다. 운이 없어도 비밀번호 없이도 모든 사용자로 로그인 할 수 있습니다.


답변:


6

나는 그것을 알아. /etc/mysql/my.cnf에는 암호 키 쌍이 저장되어 있지 않지만 /root/.my.cnf에는 암호가 저장되어 있습니다.

/root/.my.cnf에서 비밀번호를 주석 처리하자마자 비밀번호없이 로그인 할 수 없었습니다 (예상 한 것임).

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