mysql数据库创建新用户,并只给其必要的权限

要创建新用户并替换掉 root,请按照以下步骤操作:

1. 进入 MySQL 容器

首先,你需要通过终端进入正在运行的 MySQL 容器,使用 root 账号执行管理命令:

bash 复制代码
# 进入容器内部
docker exec -it mysql-aipbl mysql -uroot -pSztu@123456

2. 执行 SQL 创建业务用户

进入 MySQL 命令行后,依次输入以下命令(建议将 web_userNewPass@123 替换为你自己的名称和强密码):

sql 复制代码
-- 1. 创建新用户 (允许从任何主机连接,匹配 Docker 网络环境)
CREATE USER 'web_user'@'%' IDENTIFIED BY 'NewPass@123';

-- 2. 仅授予对 ai_pbl 数据库的常用操作权限(不给 DROP 权限更安全)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER ON ai_pbl.* TO 'web_user'@'%';

-- 3. 刷新权限使之生效
FLUSH PRIVILEGES;

-- 4. 退出
EXIT;

3. 修改你的代码配置 (DataSource)

现在,你可以安全地将代码中的 root 替换为新账号。修改后的 DataSource 如下:

修改前:
"root:Sztu@123456@tcp(mysql-aipbl:3306)/ai_pbl?..."

修改后:
"web_user:NewPass@123@tcp(mysql-aipbl:3306)/ai_pbl?charset=utf8mb4&parseTime=True&loc=Asia%2FShanghai"


4. 安全进阶:使用环境变量 (推荐)

为了符合你之前提到的"安全规范",禁止在代码中硬编码账号密码 。最佳实践是在 docker-compose.yml 或 Ubuntu 的环境变量中设置,然后在代码中读取。

在 Docker Compose 中配置:

yaml 复制代码
services:
  app:
    image: my-vue-backend
    environment:
      - DB_DSN=web_user:NewPass@123@tcp(mysql-aipbl:3306)/ai_pbl?charset=utf8mb4&parseTime=True&loc=Asia%2FShanghai

在 Go 代码中读取:

go 复制代码
dsn := os.Getenv("DB_DSN")
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

常见问题排查

  • 连接失败? 确保你的 web_user 授权的主机是 '%' 而不是 'localhost',因为在 Docker 环境中,App 容器连接 MySQL 容器被视为远程连接。
  • 权限不足? 如果你的程序需要自动迁移表结构(如 GORM 的 AutoMigrate),请确保权限列表中包含 CREATEALTER
相关推荐
zlwool5 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
小灰灰搞电子6 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
软件聚导航8 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
2601_960906729 小时前
1X发布自己的世界模型1XWM
mysql·mongodb·rabbitmq·memcached
学习星球9 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
GoppViper9 小时前
RDF资源描述框架深度解析:语义Web的数据基石与实战逻辑
前端·数据库
2601_9621741710 小时前
Redis 简介
数据库·redis·wpf
夜雪一千10 小时前
MySQL 各种数据同步方案全梳理:从简单复制到异构同步实战
数据库·mysql
ruleslol10 小时前
MySQL: OR查询为什么会导致索引失效
mysql
Highcharts.js11 小时前
Highcharts 下钻(Drilldown)柱状图 Demo
数据库·信息可视化·hbase·highcharts·drilldown·js模块·下钻图表