评论

收藏

[MySQL] Zabbix 认证方式配置为LDAP,倘若LDAP挂掉后该怎么办

数据库 数据库 发布于:2021-07-04 09:43 | 阅读数:578 | 评论:0

  Zabbix 认证方式有三种,分别是InternalLDAPHTTP。这里对认证方式不做过多解释。
  

  假如我们将认证方式配置为LDAP,但是认证使用的账号被误删除,并且密码已经记不清了,或者LDAP
  系统挂掉,此时使用Zabbix初安装时的Admin/zabbix 账号密码组合是不能登陆的。这时我们该怎么办
  呢?
  

  思路有两个:
  1. 更改认证类型为Internal,然后使用Admin登陆,如果忘记密码,也可以重置Admin密码
  2. 更新LDAP认证主机和Bind DN
  

  其实这些配置信息都是存储在数据库中的,我们可以通过数据库修改这些信息。
  下面我们看一下数据库表信息:
[root@zabbix ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 83
Server version: 5.1.72-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use zabbix;
Database changed
mysql> show tables;
+-----------------------+
| Tables_in_zabbix    |
+-----------------------+
| acknowledges      |
| actions         |
| alerts        |
| applications      |
| auditlog        |
| auditlog_details    |
| autoreg_host      |
| conditions      |
| config        |
| dchecks         |
| dhosts        |
| drules        |
| dservices       |
| escalations       |
| events        |
| expressions       |
| functions       |
| globalmacro       |
| globalvars      |
| graph_discovery     |
| graph_theme       |
| graphs        |
| graphs_items      |
| groups        |
| help_items      |
| history         |
| history_log       |
| history_str       |
| history_str_sync    |
| history_sync      |
| history_text      |
| history_uint      |
| history_uint_sync   |
| host_inventory    |
| hostmacro       |
| hosts         |
| hosts_groups      |
| hosts_templates     |
| housekeeper       |
| httpstep        |
| httpstepitem      |
| httptest        |
| httptestitem      |
| icon_map        |
| icon_mapping      |
| ids           |
| p_w_picpaths        |
| interface       |
| item_discovery    |
| items         |
| items_applications  |
| maintenances      |
| maintenances_groups   |
| maintenances_hosts  |
| maintenances_windows  |
| mappings        |
| media         |
| media_type      |
| node_cksum      |
| nodes         |
| opcommand       |
| opcommand_grp     |
| opcommand_hst     |
| opconditions      |
| operations      |
| opgroup         |
| opmessage       |
| opmessage_grp     |
| opmessage_usr     |
| optemplate      |
| profiles        |
| proxy_autoreg_host  |
| proxy_dhistory    |
| proxy_history     |
| regexps         |
| rights        |
| screens         |
| screens_items     |
| scripts         |
| service_alarms    |
| services        |
| services_links    |
| services_times    |
| sessions        |
| slides        |
| slideshows      |
| sysmap_element_url  |
| sysmap_url      |
| sysmaps         |
| sysmaps_elements    |
| sysmaps_link_triggers |
| sysmaps_links     |
| timeperiods       |
| trends        |
| trends_uint       |
| trigger_depends     |
| trigger_discovery   |
| triggers        |
| user_history      |
| users         |
| users_groups      |
| usrgrp        |
| valuemaps       |
+-----------------------+
103 rows in set (0.00 sec)
  

  用户和认证的信息涉及到四个表,分别是表config、users、users_groups、usrgrp。
  

  config表结构:
mysql> desc config;
+-------------------------+---------------------+------+-----+-----------------+-------+
| Field           | Type        | Null | Key | Default     | Extra |
+-------------------------+---------------------+------+-----+-----------------+-------+
| configid        | bigint(20) unsigned | NO   | PRI | NULL      |     |
| alert_history       | int(11)       | NO   |   | 0         |     |
| event_history       | int(11)       | NO   |   | 0         |     |
| refresh_unsupported   | int(11)       | NO   |   | 0         |     |
| work_period       | varchar(100)    | NO   |   | 1-5,00:00-24:00 |     |
| alert_usrgrpid      | bigint(20) unsigned | YES  | MUL | NULL      |     |
| event_ack_enable    | int(11)       | NO   |   | 1         |     |
| event_expire      | int(11)       | NO   |   | 7         |     |
| event_show_max      | int(11)       | NO   |   | 100       |     |
| default_theme       | varchar(128)    | NO   |   | originalblue  |     |
| authentication_type   | int(11)       | NO   |   | 0         |     |
| ldap_host         | varchar(255)    | NO   |   |         |     |
| ldap_port         | int(11)       | NO   |   | 389       |     |
| ldap_base_dn      | varchar(255)    | NO   |   |         |     |
| ldap_bind_dn      | varchar(255)    | NO   |   |         |     |
| ldap_bind_password    | varchar(128)    | NO   |   |         |     |
| ldap_search_attribute   | varchar(128)    | NO   |   |         |     |
| dropdown_first_entry  | int(11)       | NO   |   | 1         |     |
| dropdown_first_remember | int(11)       | NO   |   | 1         |     |
| discovery_groupid     | bigint(20) unsigned | NO   | MUL | NULL      |     |
| max_in_table      | int(11)       | NO   |   | 50        |     |
| search_limit      | int(11)       | NO   |   | 1000      |     |
| severity_color_0    | varchar(6)      | NO   |   | DBDBDB      |     |
| severity_color_1    | varchar(6)      | NO   |   | D6F6FF      |     |
| severity_color_2    | varchar(6)      | NO   |   | FFF6A5      |     |
| severity_color_3    | varchar(6)      | NO   |   | FFB689      |     |
| severity_color_4    | varchar(6)      | NO   |   | FF9999      |     |
| severity_color_5    | varchar(6)      | NO   |   | FF3838      |     |
| severity_name_0     | varchar(32)     | NO   |   | Not classified  |     |
| severity_name_1     | varchar(32)     | NO   |   | Information   |     |
| severity_name_2     | varchar(32)     | NO   |   | Warning     |     |
| severity_name_3     | varchar(32)     | NO   |   | Average     |     |
| severity_name_4     | varchar(32)     | NO   |   | High      |     |
| severity_name_5     | varchar(32)     | NO   |   | Disaster    |     |
| ok_period         | int(11)       | NO   |   | 1800      |     |
| blink_period      | int(11)       | NO   |   | 1800      |     |
| problem_unack_color   | varchar(6)      | NO   |   | DC0000      |     |
| problem_ack_color     | varchar(6)      | NO   |   | DC0000      |     |
| ok_unack_color      | varchar(6)      | NO   |   | 00AA00      |     |
| ok_ack_color      | varchar(6)      | NO   |   | 00AA00      |     |
| problem_unack_style   | int(11)       | NO   |   | 1         |     |
| problem_ack_style     | int(11)       | NO   |   | 1         |     |
| ok_unack_style      | int(11)       | NO   |   | 1         |     |
| ok_ack_style      | int(11)       | NO   |   | 1         |     |
| snmptrap_logging    | int(11)       | NO   |   | 1         |     |
| server_check_interval   | int(11)       | NO   |   | 10        |     |
+-------------------------+---------------------+------+-----+-----------------+-------+
46 rows in set (0.03 sec)
  

  其中,认证类型由 authentication_type,字段决定,值可以为0,1和2。0 代表Internal,1代表
  LDAP,2代表HTTP.
  

  这样更改认证类型就容易了:
  将认证类型更改为Internal:
mysql> update config set authentication_type=0;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  

  修改Admin密码:
#查询Admin用户的ID:
mysql> select * from users;
+--------+-------------+-------------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+----------------+---------------+---------------+
| userid | alias     | name    | surname     | passwd               | url | autologin | autologout | lang  | refresh | type | theme   | attempt_failed | attempt_ip   | attempt_clock | rows_per_page |
+--------+-------------+-------------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+----------------+---------------+---------------+
|    1 | Admin     | Zabbix    | Administrator | 5fce1b3e34b520afeffb37ce08c7cd66 |   |     1 |      0 | zh_CN |    30 |  3 | default |        4 | 192.168.100.34 |  1383812925 |      50 |
#更新Admin密码
mysql> update users set passwd='zabbix' where userid=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  

  更改用户权限组:

  
#查询权限组ID
mysql> select * from usrgrp;
+----------+---------------------------+------------+--------------+------------+
| usrgrpid | name            | gui_access | users_status | debug_mode |
+----------+---------------------------+------------+--------------+------------+
|    7 | Zabbix administrators   |      0 |      0 |      0 |
|    8 | Guests          |      0 |      0 |      0 |
|    9 | Disabled          |      0 |      1 |      0 |
|     11 | Enabled debug mode    |      0 |      0 |      1 |
|     12 | No access to the frontend |      2 |      0 |      0 |
|     13 | Hou             |      0 |      0 |      0 |
|     14 | Mu            |      0 |      0 |      0 |
+----------+---------------------------+------------+--------------+------------+
7 rows in set (0.00 sec)
#查询用户和权限组对应关系
mysql> select * from users_groups ;
+----+----------+--------+
| id | usrgrpid | userid |
+----+----------+--------+
|  4 |    7 |    1 |
|  2 |    8 |    2 |
|  5 |    7 |    3 |
|  6 |    7 |    4 |
|  7 |    7 |    5 |
| 12 |     14 |    6 |
| 11 |     13 |    8 |
+----+----------+--------+
7 rows in set (0.00 sec)
#修改用户所在权限组
mysql>  update users_group set usrgrpid='1' where userid=3;
ERROR 1146 (42S02): Table 'zabbix.users_group' doesn't exist
mysql>  update users_groups set usrgrpid='1' where userid=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
  

  更改LDAP主机或者BIND DN:
mysql> update config set ldap_host='xxx.xxx.xxx.xxx' ldap_base_dn='cn=ldap_search,ou=example,dc=com' ldap_bind_password='passwd';
  

  

  有了上面这些操作,不论是用户误删除且密码忘记,还是LDAP挂掉,都可以随心所欲的更改认证了。
  

  

  


  
关注下面的标签,发现更多相似文章