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;
相关推荐
m0_588758485 分钟前
如何解决Oracle启动ORA-00119错误_网络服务名与listener相关性
jvm·数据库·python
PSLoverS5 分钟前
MySQL如何利用防火墙限制MySQL端口_使用iptables或安全组防御
jvm·数据库·python
qq_414256575 分钟前
Go语言如何用strings.Builder_Go语言strings.Builder教程【总结】
jvm·数据库·python
阿坤带你走近大数据8 分钟前
Oracle-表空间temp
数据库·oracle
Navicat中国8 分钟前
数据库事务隔离级别的实践指南
数据库·navicat
马优晨11 分钟前
数据库的连接池、最大连接池会话数目、SQL查询超时时间、连接等待超时时间是什么意思?
数据库·数据连接池·最大连接池会话数目·sql查询超时·连接等待超时
2301_7693406717 分钟前
SQL如何处理分组后的空值统计_善用COALESCE与聚合函数
jvm·数据库·python
2301_7820404520 分钟前
在 Go 语言中声明包级(全局)映射的正确方法
jvm·数据库·python
zh15702321 分钟前
如何在 macOS 中使用 launchd 每分钟执行一次 PHP 脚本
jvm·数据库·python
阿正呀21 分钟前
HTML怎么显示计量值_HTML meter标签应用场景【指南】
jvm·数据库·python