我正在按照一些教程在 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
可以从远程计算机进行连接和本地主机。
但是,如果zabbix
尝试从 SQL 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 参考手册解释得很好。这是一个快速总结
将连接标识符拆分为用户名和原始主机
- 用户名必须与您用于身份验证的用户名匹配
- 如果主机名是“%”,它将匹配任何原始主机名
- 否则,主机名必须与文字 DNS 名称匹配