mysql不支持cidr网段语法,phpmyadmin界面中无法直接填写192.168.10.0/24;必须使用通配符形式如'192.168.10.%'或精确ip创建用户,并执行flush privileges生效。

不能直接在 phpMyAdmin 界面里填 192.168.10.0/24 这类 CIDR 表达式来设置网段限制——MySQL 不支持 CIDR,phpMyAdmin 的「用户账户」页只是图形化包装,底层仍走 MySQL 的 host 字符串匹配规则。
CREATE USER 语句必须显式带 @'host' 才生效
phpMyAdmin 的「用户账户」页面里点「编辑权限」或「添加用户」时,「主机」字段填的不是子网掩码,而是 MySQL 权限系统能识别的 host 值。如果你只写用户名不写 @ 后的部分,或者留空、填 localhost 却想从远程连,GRANT 或 CREATE USER 会失败或不匹配。
- 错误写法:
CREATE USER 'pmauser'(缺@'xxx',报 ERROR 1133) - 正确写法:
CREATE USER 'pmauser'@'192.168.10.%'(匹配该 C 段全部 IP,但不含广播地址192.168.10.255) - 更安全的替代:
CREATE USER 'pmauser'@'192.168.10.5'(精确 IP,无歧义) - 别用
'192.168.10._'或'192.168.%.10'——_在 host 中无通配含义,中间带%是非法语法
FLUSH PRIVILEGES 是远程连不上的最常见漏项
你在 phpMyAdmin 里点「执行」建好用户、授完权,MySQL 只是把记录写进 mysql.user 表,不会自动重载到内存权限缓存。没执行这步,所有新授权都等于没做。
- 必须手动执行:
FLUSH PRIVILEGES; - 如果用的是 MySQL 8.0+,建议分两步:
CREATE USER+GRANT+FLUSH PRIVILEGES,避免认证插件兼容问题 - phpMyAdmin 的「用户账户」页底部有「刷新权限」按钮,点它等价于执行
FLUSH PRIVILEGES;但很多用户建完用户就关页,忘了点
phpMyAdmin 自身的 $cfg['Servers'][$i]['host'] 和 MySQL 用户的 host 必须对得上
phpMyAdmin 是个中转界面,它连谁、怎么连,由 config.inc.php 决定;而 MySQL 服务端放不放行,由 mysql.user 表里的 Host 字段决定。两者错位,连接在 TCP 层就被拒,phpMyAdmin 根本收不到详细错误。
- 假设你希望从局域网
192.168.10.5访问远程数据库,则:- MySQL 用户必须是
'pmauser'@'192.168.10.5'或'pmauser'@'192.168.10.%' - phpMyAdmin 的
$cfg['Servers'][$i]['host']要设成远程数据库的 IP(如'10.0.2.15'),不能是'localhost' - 远程 MySQL 的
bind-address不能是127.0.0.1,得是0.0.0.0或具体内网 IP
- MySQL 用户必须是
- 防火墙必须放行 3306(或自定义端口),否则请求连不到 MySQL 进程
真正麻烦的不是语法,而是三处 host 的协同:MySQL 用户表里的 Host、phpMyAdmin 配置里的 $cfg['Servers'][$i]['host']、MySQL 服务端的 bind-address。任意一处写错或漏改,都会表现为「#2003 - Can't connect to MySQL server」,但错误信息里完全不提哪一环出了问题。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











