授予 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可以从远程计算机进行连接本地主机。
但是,如果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 参考手册解释得很好。这是一个快速总结

将连接标识符拆分为用户名和原始主机

  1. 用户名必须与您用于身份验证的用户名匹配
  2. 如果主机名是“%”,它将匹配任何原始主机名
  3. 否则,主机名必须与文字 DNS 名称匹配

相关内容