Zabbix 导入数据报错 “未选择数据库” 解决办法详解
错误现象:导入 Zabbix 初始 schema 时提示
ERROR 1046 (3D000): No database selected或 Web 安装向导报 “未选择数据库”。 90% 原因:命令行导入时没指定要导入到哪个库;剩下 10% 是数据库不存在、用户权限不对、字符集不匹配。
一、错误原因
Zabbix 安装时需要把官方提供的 SQL 文件导入到你创建的 zabbix 数据库里。常见两种做法:
- 命令行导入(CentOS yum 安装后推荐)
- Web 安装向导(浏览器点 “下一步” 自动导入)
“未选择数据库” 通常发生在命令行导入,因为你执行了:
mysql -uroot -p < schema.sql # ❌ 没指定数据库
MySQL 不知道把表建到哪个库里。
二、正确导入步骤(CentOS7 + MySQL/MariaDB)
1. 先创建数据库和账号(如果还没建)
mysql -uroot -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@Pass2026';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;
Zabbix 6.x+ 要求
utf8mb4+utf8mb4_bin,不能用旧的 utf8。
2. 找到官方 SQL 文件
# 不同版本路径略不同,找一下
rpm -ql zabbix-server-mysql | grep sql
# 常见路径:
# /usr/share/doc/zabbix-server-mysql-5.0.43/create.sql.gz
# /usr/share/doc/zabbix-server-mysql-6.0/schema.sql.gz
5.x 是一个
create.sql.gz;6.x+ 拆成schema.sql、images.sql、data.sql三个文件,必须按顺序导入。
3. 正确导入命令(关键!)
Zabbix 5.x(单文件 create.sql.gz)
# ✅ 必须在 mysql 命令里指定数据库名 zabbix
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Zabbix 6.x/7.x(三文件按顺序)
cd /usr/share/doc/zabbix-server-mysql-*
# ✅ 注意末尾的 zabbix 就是数据库名
mysql -uzabbix -p zabbix < schema.sql
mysql -uzabbix -p zabbix < images.sql
mysql -uzabbix -p zabbix < data.sql
如果你用 root 导入也行,但末尾必须写
zabbix:
mysql -uroot -p zabbix < schema.sql
4. 导入后关掉临时参数
SET GLOBAL log_bin_trust_function_creators = 0;
三、验证导入成功
mysql -uzabbix -p zabbix -e "show tables;" | wc -l
Zabbix 6.x 应该有 100+ 张表(5.x 也是上百张)。如果只有几张或 0 张,就是没导成功。
mysql -uzabbix -p zabbix -e "select * from users;"
应该能看到默认的 Admin 用户。
四、Web 安装向导报 “未选择数据库”
如果你是在浏览器 http://服务器IP/zabbix 安装向导第 1 步数据库配置页报错:
- Database type:选 MySQL
- Database host:
localhost(如果 zabbix-server 和数据库同台) - Database port:0(用默认 3306),不要填成 socket
- Database name:
zabbix - User:
zabbix - Password:你创建时设的密码
- 点 Next step,如果报 “未选择数据库”:
- 检查
Database name是否留空了 - 检查数据库是否真的存在:
show databases; - 检查 zabbix 用户对 zabbix 库有权限:
show grants for 'zabbix'@'localhost';
- 检查
五、常见坑与排错
1. ERROR 1046 (3D000): No database selected
就是命令末尾没写数据库名,按上面第二节写法补上。
2. Access denied for user 'zabbix'@'localhost'
- 密码错
- zabbix 用户没建对
- 重新
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; FLUSH PRIVILEGES;
3. Unknown database 'zabbix'
数据库根本没建,回到第一步 CREATE DATABASE。
4. 导入到一半报错 Check that you have required privileges
- zabbix 用户权限不够,需要
GRANT ALL ON zabbix.* - 或改用 root 导入:
mysql -uroot -p zabbix < schema.sql
5. 字符集报错 Incorrect string value
- 数据库建错了字符集。删掉重建:
DROP DATABASE zabbix;
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
- 重新导入。
6. 6.x 导入顺序错了
必须 schema → images → data,不能乱序,否则外键报错。
7. 导入太慢 / 卡住
- MySQL 配置
innodb_flush_log_at_trx_commit=2临时加速; - 或导入完再改回 1。
8. PostgreSQL 版本
# PostgreSQL 导入(注意切换到 zabbix 用户)
sudo -u zabbix psql -d zabbix -f /usr/share/doc/zabbix-server-pgsql*/schema.sql
sudo -u zabbix psql -d zabbix -f /usr/share/doc/zabbix-server-pgsql*/images.sql
sudo -u zabbix psql -d zabbix -f /usr/share/doc/zabbix-server-pgsql*/data.sql
六、导入后配置 zabbix_server
编辑 /etc/zabbix/zabbix_server.conf:
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@Pass2026
# 如果 socket 方式
# DBSocket=/var/lib/mysql/mysql.sock
# 如果远程数据库
# DBHost=192.168.1.10
# DBPort=3306
重启:
systemctl restart zabbix-server
systemctl status zabbix-server
tail -f /var/log/zabbix/zabbix_server.log
日志里不应再有 database errors 或 no database selected。
七、验证整套流程
- 浏览器打开
http://服务器IP/zabbix - 默认账号:Admin / zabbix(注意 A 大写)
- 左下角改成中文:User settings → Language → Chinese (zh_CN)
八、一句话总结
导入命令末尾必须显式写数据库名:
mysql -uzabbix -p zabbix < schema.sql
# ^^^^^^ 这就是"选择数据库"
少了这个 zabbix,MySQL 就报 “未选择数据库”。











暂无评论内容