mysql连接问题

错误原因分析

报错 ERROR 1064 (42000)MySQL 8.0 版本的语法不兼容问题 :MySQL 8.0 彻底废弃了 GRANT ... IDENTIFIED BY 这种「授权 + 改密码」二合一的旧语法,必须分两步执行:先创建 / 更新用户,再单独授权,否则就会报语法错误。


✅ 正确执行步骤(MySQL 8.0 专用,可直接复制)

1. 先创建 / 更新 root 用户(允许任意 IP 远程连接)

sql

复制代码
-- 若用户已存在,先删除旧的(可选,避免冲突)
DROP USER IF EXISTS 'root'@'%';

-- 创建允许任意IP连接的root用户,设置密码为root
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
2. 再给用户分配全部权限

sql

复制代码
-- 授予root用户所有库、所有表的全部权限,并允许转授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
3. 刷新权限,使配置立即生效

sql

复制代码
FLUSH PRIVILEGES;

📌 补充说明(适配不同场景)

1. 仅允许指定 IP / 网段(更安全,生产环境推荐)

sql

复制代码
-- 仅允许192.168.124.x网段的机器连接
DROP USER IF EXISTS 'root'@'192.168.124.%';
CREATE USER 'root'@'192.168.124.%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.124.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2. 验证用户是否创建成功

sql

复制代码
-- 查看所有用户权限
SELECT user, host FROM mysql.user;

能看到 root 对应的 host%,说明配置成功。

3. 额外关键配置(避免连接失败)
  • 修改绑定地址 :编辑 my.cnf(Linux)/ my.ini(Windows),将 bind-address = 127.0.0.1 改为 bind-address = 0.0.0.0 或直接注释,然后重启 MySQL 服务
  • 开放防火墙 :放行 3306 端口(Linux:firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload;Windows:防火墙入站规则放行 3306)

⚠️ 版本差异提醒

表格

MySQL 版本 授权语法支持
5.7 及更早 支持 GRANT ... IDENTIFIED BY 二合一语法
8.0 及更高 仅支持「创建用户 + 单独授权」两步语法

你当前的环境是 MySQL 8.0,所以必须用分两步的新语法,旧语法会直接报 1064 错误。


✅ 完整一键执行命令(直接复制到 MySQL 命令行)

sql

复制代码
DROP USER IF EXISTS 'root'@'%';
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SELECT user, host FROM mysql.user;
相关推荐
倔强的石头_12 小时前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB14 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
jiayou642 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE3 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr3 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩4 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3505 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3505 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3505 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库