mysql用户创建需用root或含create user权限账号登录,host必须精准匹配连接来源(如localhost、具体ip或cidr),权限须按最小集授予select/insert/update等必要权限,禁用%通配与高危权限,并显式指定认证插件及刷新权限。

必须用 root 或含 CREATE USER 权限的账号登录
普通账号进不了「用户」页面,或者点了「添加用户」没反应、返回空白页——这基本说明当前 MySQL 账号没被授予 CREATE USER 和 INSERT 权限。API 网关账号需要稳定创建和授权,不能靠“试错”推进。root 默认可用;若用其他管理账号,得提前确认它有:GRANT OPTION、CREATE USER、对 mysql.user 表的写权限。
Host 字段填错会导致网关连接反复失败
API 网关(比如 Kong 或 APISIX)通常从固定 IP 或容器网络发起连接,但很多人填 % 图省事,结果暴露在公网,或填 localhost 却在 Docker 里用 127.0.0.1 连,MySQL 直接拒绝——因为这两个 Host 在 MySQL 权限系统里是完全不同的主体。
- 网关与 MySQL 同机部署 → 填
localhost(不是127.0.0.1) - 网关跑在 Kubernetes 或 Docker 网络 → 查宿主机或服务发现地址,填具体 IP(如
10.42.1.5),或用 CIDR 段(如10.42.%.%) - 绝对不要在生产环境填
%,哪怕加了防火墙也不行;临时测试可填192.168.%.%
权限必须按最小集精确授予,不能勾“全选”
API 网关账号只做查询和少量写入(如记录日志、更新 token),不需要 DROP、CREATE、FILE、SHUTDOWN 这类高危权限。勾全选不仅违反最小权限原则,还会让安全扫描直接标红。
- 数据库范围:选「数据库特定权限」→ 下拉选择目标库(如
gateway_logs或apisix_config),别碰「全局权限」 - 常用权限组合:
SELECT、INSERT、UPDATE(如需刷新缓存或更新路由状态);DELETE仅在需清理过期数据时启用 -
Grant复选框必须不勾——网关账号不该有再授权能力 - 创建后务必点右上角「重新载入权限」按钮(两个循环箭头图标),否则 MySQL 内部权限缓存不刷新,
mysql -u gateway -p都连不上
密码空格、认证插件、表单未提交是高频静默失败点
点完「执行」没反应、用户列表里找不到新账号、或者登录时报 #1045 - Access denied,往往不是配置逻辑问题,而是表单细节踩坑:
- 密码字段输入两次,但其中一次只打了空格——MySQL 8.0+ 会当作空密码拒绝创建
- MySQL 8.0 默认用
caching_sha2_password插件,而旧版 PHP 扩展或某些网关客户端不兼容;若确定要用该插件,确保网关侧启用了对应驱动;更稳妥的做法是在创建用户时显式指定:IDENTIFIED WITH mysql_native_password BY 'xxx'(phpMyAdmin 界面不直接暴露该选项,需切到「SQL」页手动执行) - 「添加用户账户」页面里,User name 必须选「Use text field」并填值;Host 不能留空;密码不能全为空格;最后必须拉到最底部点「执行」——不点就是草稿,不会入库
真正难的不是操作步骤,而是 Host 和权限范围这种“看不见的耦合”:网关每次重连都依赖这两项精准匹配,差一个点,就卡在连接池初始化阶段,日志里只显示 timeout,根本看不出是权限配错了。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











