针对 MySQL ER_3619 权限级别错误,通常出现在 MySQL 8.0 及以上版本,主要原因是权限语法变更或权限表损坏。修复方法包括:首先检查是否使用了旧版 GRANT 语句创建用户,8.0 版本需先用 CREATE USER 创建用户再用 GRANT 授权;其次检查权限表是否损坏,可通过备份 mysql 库后使用--initialize-insecure 重建权限表结构;最后确保远程访问权限已正确分配,需修改 user 表 host 字段为%或使用 GRANT 授权特定 IP,并执行 FLUSH PRIVILEGES 刷新权限。若涉及远程修复,需确保防火墙开放 3306 端口且绑定地址非仅限 localhost。
MySQL 8.0 使用时遇到的一些报错及解决方法_illegal privilege level specified for privileges-CSDN 博客
问题二、ERROR 1822 (HY000) 问题三、ERROR 3619 前言 最近在完成一门课程的大作业时用到了 mysql,所以就顺便入手了一些 mysql8.0,当然在使用过程中也遇到了一些小问题,于是记录在此以便复习。####运行环境说明:->ubuntuversion: 20.04 ->MySqlversion: 8.0.27-0ubuntu0.20.04.1 (Ubuntu) 问题一:ERROR 1064 (42000) 完整问题描述:ERROR 1064 (42000): You have an error in your SQLsyntax; check the manual that corresponds to your MySQL server version for the right syntax to use near'xxxxxx'at line x 问题解析:我认为这是最容易遇到的问题,发生的原因就是语法错误,再无其他 问题解决:仔细检查语法问题,比如:括号匹配 mysql>create tablettt(->xxxchar,->xxxxchar;//缺少括号 一键获取完整项目代码 c 1 2 3 4 逗号冗余 mysql>create tablettt(->xxxchar,//逗号冗余->); 一键获取完整项目代码 c 1 2 3 4 5 中英文字符切换 该错误太过基础故不作示例 一键获取完整项目代码 c 1 关键字遗忘 mysql>createtest(//缺少 table 关键字->); 一键获取完整项目代码 c 1 2 3 4 5 问题一虽然很简单但非常容易遇到,一定要规范自己的行文风格,避免低级报错。此处再补充一个冷门的,非语法错误导致的 1064 报错原因:在 MySQL 8.0+ 版本中,数据库系统是不允许用户使用赋值语句 grant 来创建新用户的!!!首先进入 mysql 数据库下查看 user 表的用户 mysql>select user from user;+------------------+|user|+------------------+|customer||damn||default_1||default_2||debian-sys-maint||mysql.infoschema||mysql.session||mysql.sys||root|+------------------+9rows inset(0.00sec) 一键获取完整项目代码 c 1 2 3 4 5 6 7 8 9 10 11 1 问题一:ERROR 1064 (42000)(撰于 2021 年 11 月 15 日)
MySQL 数据库远程访问权限设置
一、改表 (当然我们要先知道表在哪,适用于整个数据库) showdatabases;#显示所有数据库 use mysql;#使用 mysql 数据库 show tables;#找到这个 user 表 select* from uesr;#查看该表所有信息 我们能清楚的对应的主机;用户以及用户权限 1、直接修改 update user set host = '%' where user = 'root';#更新 root 用户的主机访问为任何值 2、加指定用户以及指定权限 insert intouser(host,user) values('ip','user');#添加一个用户 user 地址 ip 的无权限用户 (可以插入新增用户信息时,附带把权限也查进去,执行时会有告警,因为表中有约束,不用深究) 新增成功,但是没有权限。二、授权 直接授权 (mysql8.0 版本会报错,语法分割) grant all privileges on . to'user'@'ip' identified by '123456';#授权给主机为 ip 的 user 用户开放,所有数据库及对应表的所有权限,并且密码设置为 123456(快速简洁) 直接授权 (改 - 针对新版本) create user'user'@'ip' identified by '123456';#创建一个主机地址是 ip 登录密码是 123456 的 user 用户 grant all privileges on . to'user'@'ip';#链接上一步,给他所有权限 指定授权 grant select,create on myemployees.* to'mysql'@'%';#设置 mysql 用户只用 myemployees 库的查,创建权限 flush privilege;#刷新下数据权限 针对 mysql8.0 版本以上操作时会报错无法链接; 8.0 版本因为密码规则和语法规则的改变,所以要再次设置 在相同情况下依次执行以下语句 alter uesr'mysql'@'%' identified by '123456' passwore expire never;#修改加密规则 alter uesr'mysql'@'%' identified by '123456' mysql_native_password by '123456';#再次重置密码 flush privilege;#刷新下数据权限 试着用工具链接上去看看吧!(来自 2023 年 10 月 26 日的资料)
Mysql 权限 & 修改密码 & 忘记密码 & 远程登录
创建、授权、删除、查看用户权限 代码语言:javascript AI 代码解释 第一步:创建用户格式:CREATEUSER'username'@'host'IDENTIFIEDBY'password';第二步:进行授权格式:GRANTprivileges ONdatabasename.tablename TO'username'@'host'privileges 表示权限的类型:如 SELECT,INSERT,UPDATE 等,如果要授予所的权限则使用 ALLdatabasename 数据库名,如果想全表 用*tablename 数据表名,如果想全表 用*host IPV4 地址,如果想用全 ip 用% 第三步:撤销授权格式:REVOKEprivilege ONdatabasename.tablename FROM'username'@'host';第四步:删除用户格式:DROPUSER'username'@'host';第五步:查看用户权限格式:show grants for'username'@'host';示例:# 创建一个 zhangsan 的本地用户密码为 zhangsan123 CREATEUSER'zhangsan'@'localhost'IDENTIFIEDBY'zhangsan123';# 对所有 ip 的张三授权查询、插入 test 库的 user 表 GRANTSELECT,INSERTONtest.user TO'zhangsan'@'%';# 撤销本地张三的插入权限 REVOKEinsert ON'*'.'*'FROM'zhangsan'@'localhost';# 删除本地用户张三 Drop User 'zhangsan'@'local'# 最后要执行权限刷新 flush privileges; 远程登录 修改 Mysql 账号密码 修改密码 (建议将 用户名 Host 用双引号引起来) 代码语言:javascript AI 代码解释 Windows 忘记 Mysql 密码 (共 4 步) 第一步:暂停 Mysql 服务 第二步:修改配置文件 当 Mysql 服务为 已停止 前往修改配置文件:mysql.ini 文件 代码语言:javascript AI 代码解释 打开此配置文件,找到 [mysqlid] 在下面随便开启一行 填写 代码语言:javascript AI 代码解释 第三步:启动 mysql 服务 并执行修改超管密码的命令 保存文件,去任务管理器 - 启动 mysql 服务 使用命令行,输入 代码语言:javascript AI 代码解释 选择 Mysql 表中 mysql 数据库 代码语言:javascript AI 代码解释 执行代码 代码语言:javascript AI 代码解释 第四步:撤销修改的配置文件,重启 mysql 服务 去除 Mysql.ini 中 [mysqlid] 下追加的 skip-grant-tables 重启 Mysql 服务:完成!重新登录 Mysql 试试吧!(搜索结果收录于 2026 年 3 月 31 日)
mysql 中的权限错误与权限表修复方法
MySQL 权限错误主因是系统库权限表数据损坏、格式不一致或 FLUSH PRIVILEGES 未生效致缓存与磁盘脱节;需检查--skip-grant-tables 模式、备份 mysql 库、验证版本兼容性,再通过--initialize-insecure 重建权限表结构并重设密码。MySQL 权限错误通常不是“权限被删了”这么简单,而是 mysql 系统库中的权限表 (如 user、db、tables_priv) 数据损坏、格式不一致,或 FLUSH PRIVILEGES 未生效导致的缓存与磁盘状态脱节。权限错误常见现象与快速定位 典型报错如:Access denied for user 'xxx'@'%' to database 'yyy',但确认 SHOW GRANTS FOR 'xxx'@'%'显示权限存在;或新建用户后始终无法登录,SELECT * FROM mysql.user 却查不到该行——这往往说明权限表结构异常或 MySQL 未加载最新数据。先检查 MySQL 是否以--skip-grant-tables 启动过,这类启动方式会绕过权限系统,重启后若未正常加载权限表,会导致后续所有权限操作失效 运行 SELECT VERSION(), @@skip_grant_tables;,确认当前是否处于跳过权限模式 用 mysqld --validate-config 检查配置合法性,排除 my.cnf 中误配 skip-grant-tables 或权限相关参数 修复权限表前必须做的三件事 直接修改 mysql 库下的表风险极高,务必前置验证和备份:停止应用连接,避免修复过程中出现并发写入冲突 执行 mysqldump --single-transaction --databases mysql > mysql_backup.sql 备份整个系统库 (注意:不要只导出 user 表,权限依赖多表关联) 确认 MySQL 版本与数据目录中 mysql 库的物理文件版本兼容 (例如 MySQL 8.0 的 user 表含 password_history 字段,5.7 直接拷贝会报错) 重建权限表的实操步骤 (适用于严重损坏) 当 mysql_upgrade 报错、user 表字段缺失或主键损坏时,需手动重建。核心是用官方初始化脚本重刷权限表结构与默认数据,而非直接 INSERT。以下操作需在 MySQL 停止状态下进行:标小智 智能 LOGO 设计生成器 复制 AI 写代码 1 2 cd /usr/local/mysql # 替换为你的 MySQL 安装路径 bin/mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql ⚠️ 注意:--initialize-insecure 仅重置 mysql 库结构与 root 密码为空,不会清空业务库。执行后必须立刻启动 MySQL 并重设 root 密码:复制 AI 写代码 1 2 3 bin/mysqld_safe --user=mysql & mysql -u root -p # 密码为空,直接回车 ALTER USER'root'@'localhost'IDENTIFIED BY'new_secure_password'; 再用 CREATE USER 和 GRANT 重建业务账号,切勿从旧备份中直接 INSERT INTO mysql.user—— 字段顺序、(资料日期为 2026 年 2 月 1 日)
FAQ
MySQL 8.0 中 GRANT 命令有什么变化?
在 MySQL 8.0+ 版本中,数据库系统不允许用户使用赋值语句 grant 来创建新用户,必须先用 CREATE USER 创建再用 GRANT 授权。
如何修复损坏的 MySQL 权限表?
需停止 MySQL,备份 mysql 库,使用--initialize-insecure 重置 mysql 库结构,启动后重设 root 密码并重建业务账号。
远程访问权限如何开启?
可通过修改 mysql.user 表 host 字段为%或使用 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' 授权,并刷新权限。