1044 - Access denied for user ‘root‘@‘%‘ to database ‘nacos‘

发布时间:2026/6/13 2:22:06

1044 - Access denied for user ‘root‘@‘%‘ to database ‘nacos‘ 这个报错1044 - Access denied for user root% to database nacos是MySQL 权限不足导致的简单说就是你用root%这个用户登录后没有创建nacos数据库的权限。 原因分析root%表示允许 root 用户从任意主机%连接但这个用户被授予的权限不包含CREATE DATABASE或者没有对所有数据库的管理权限。这种情况常出现在MySQL 是新装 / 容器部署、DBA 做了权限收缩、或者你不是用rootlocalhost登录的。一、MySQL自行安装的方式✅ 分步解决推荐顺序1. 用管理员权限登录 MySQL先通过本地或有权限的用户登录 MySQLbash运行# 本地直接登录或用 Docker 进入容器执行 mysql -u root -p2. 给root%用户授予完整权限执行以下 SQL 语句赋予 root 用户所有权限sql-- 授予所有数据库、所有表的所有权限 GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; -- 刷新权限使其立即生效 FLUSH PRIVILEGES;3. 验证权限并创建数据库sql-- 现在就可以创建 nacos 数据库了 CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 查看是否创建成功 SHOW DATABASES LIKE nacos;4. 回到 Navicat 重试权限刷新后回到你的数据库客户端重新尝试创建nacos数据库就不会报错了。二、Docker命令方式安装1、进入 MySQL 容器命令根据你的 yml 配置容器名称固定为mysql直接执行这条命令bash运行docker exec -it mysql mysql -u root -p执行后输入密码root配置里MYSQL_ROOT_PASSWORD: root2、登录后执行权限授权 SQLsql-- 给root%开放全部权限 GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES; -- 手动创建nacos库虽然yml配置了MYSQL_DATABASE但容器初始化后远程root可能无权限重新建一次稳妥 CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;执行完输入exit退出 MySQL 命令行。3、如果想一步到位不用交互式输密码可以直接免交互执行授权语句bash运行docker exec -it mysql mysql -uroot -proot -e GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION;FLUSH PRIVILEGES;CREATE DATABASE IF NOT EXISTS nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;补充说明如果有其他问题可以留言大家一下探讨。

相关新闻