MariaDB 권한을 부여하시겠습니까? [폐쇄]

MariaDB 권한을 부여하시겠습니까? [폐쇄]

CentOS 7.2에 Zabbix를 설치하기 위해 몇 가지 튜토리얼을 따르고 있습니다. 이것은 zabbix 데이터베이스를 생성하고 권한을 부여하는 데 사용되는 명령줄입니다.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix; 
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'password'; 
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'password'; 
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges; 
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit 
Bye

zabbix@'%'에 권한을 부여하는 데 사용되는 명령을 이해할 수 없습니다. 점은 무엇인가?

답변1

호스트 이름이 "%"이면 모든 호스트의 연결 요청과 일치합니다.와는 별개로 localhost매우 중요한 차이점입니다!
즉, 명령을 실행하면

grant all privileges on zabbix.* to zabbix@'%' identified by 'password';

"와일드카드" 호스트 이므로 사용자가 원격 시스템에서 연결할 수 있다고 %생각할 수도 있습니다.zabbix그리고로컬 호스트.
그러나 zabbixSQL Server가 실행되는 동일한 시스템에서 연결을 시도하면 Maria DB는 연결을 거부하고,

따라서 정말로 zabbix어디에서나 연결할 수 있으려면 다음을 실행해야 합니다.둘 다

grant all privileges on zabbix.* to zabbix@'localhost' identified by 'password';

그리고

grant all privileges on zabbix.* to zabbix@'%' identified by 'password';

답변2

이것MySQL 참조 매뉴얼아주 잘 설명되었습니다. 간단한 요약은 다음과 같습니다.

연결 식별자를 사용자 이름과 원본 호스트로 분할

  1. 사용자 이름은 인증에 사용한 사용자 이름과 일치해야 합니다.
  2. 호스트 이름이 "%"이면 원래 호스트 이름과 일치합니다.
  3. 그렇지 않으면 호스트 이름이 리터럴 DNS 이름과 일치해야 합니다.

관련 정보