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 루트 암호와 플러시 권한을 변경하려고했습니다. 운이 없어도 비밀번호 없이도 모든 사용자로 로그인 할 수 있습니다.