当前位置: 首页 > news >正文

MySQL 数据库用户管理规范(新人操作指南)

文章目录

    • 适用环境
      • 工作流程
    • 1. 目的与 Root 管理原则
      • 核心管理规范
    • 2. 账号规划与权限模型
      • 账号命名规范
      • 项目权限隔离结构
      • 权限细节(以 at133 为例)
    • 3. 管理员登录
    • 4. 创建业务数据库(以 at133 为例)
    • 5. 创建业务账号(示例:at133_admin)
    • 6. 赋予数据库权限
    • 7. 验证授权
    • 8. 业务用户登录测试
    • 9. 日常导出与导入(关键:业务账号可自行导入)
      • 9.1 正确的导出命令(管理员执行)
      • 9.2 业务用户自行导入
      • 9.3 禁止的操作与常见错误
    • 10. 新人入职/接手项目检查清单
      • 场景一:接手已存在的项目
      • 场景二:项目下线,清理资源
    • 附录:自动化创建脚本(create_db_user.sh)

适用环境

Linux账号:ideoa(多人共用) MySQL管理员:root 项目示例:AT133、MES、OCR、Agent Center ...

工作流程

执行

1. CREATE DATABASE

2. CREATE USER

3. GRANT ALL ON 库.*

连接并管理

Root 账号

create_db_user.sh

项目数据库

项目_admin

  • Root只需执行一次脚本,即可完成建库、建用户、授权。
  • 项目管理员拿到账号后,即可独立管理自己的数据库,无需再找 root。

1. 目的与 Root 管理原则

  • 禁止业务系统直接使用root账号
  • Root 仅用于:创建数据库、创建项目账号、分配权限、备份恢复、数据库维护。
  • 严禁将 root 用于应用连接、项目开发或程序配置。
  • 管理员负责 root 操作,开发人员只使用分配的业务账号。

核心管理规范

  • 一个项目 → 一个独立数据库 → 一个专属管理员账号(命名:项目名_admin),仅授予该库全部权限。
  • 常用命名示例:at133_adminmes_adminocr_adminagent_center_admin
  • 禁止所有项目共用root
  • 管理员职责:建库、建用户、权限分配、备份恢复。
  • 开发人员职责:使用分配的账号管理自己的库。
  • 导出数据库务必使用--no-create-db,确保业务用户能自主导入。

2. 账号规划与权限模型

账号命名规范

  • 每个项目一个独立数据库,一个专属管理员账号。
  • 账号格式:项目名_admin(例如at133_admin)。

项目权限隔离结构

Agent_Center

ALL PRIVILEGES

agent_center 数据库

agent_center_admin

OCR

ALL PRIVILEGES

ocr 数据库

ocr_admin

MES

ALL PRIVILEGES

mes 数据库

mes_admin

AT133

ALL PRIVILEGES

at133 数据库

at133_admin

权限细节(以 at133 为例)

GRANTALLPRIVILEGESONat133.*TO'at133_admin'@'%';

项目管理员可以:

  • CREATE TABLE, DROP TABLE, ALTER TABLE
  • INSERT, UPDATE, DELETE, SELECT
  • CREATE VIEW, CREATE INDEX, CREATE TRIGGER
  • 对所属库执行全部 DDL/DML 操作

项目管理员不可以:

  • CREATE DATABASE / DROP DATABASE
  • CREATE USER / DROP USER
  • 访问或操作其他数据库

3. 管理员登录

mysql-uroot-p# 输入 root 密码(不显示)

4. 创建业务数据库(以 at133 为例)

CREATEDATABASEIFNOTEXISTSat133DEFAULTCHARACTERSETutf8mb4DEFAULTCOLLATEutf8mb4_unicode_ci;

验证:

SHOWDATABASES;

5. 创建业务账号(示例:at133_admin)

CREATEUSERIFNOTEXISTS'at133_admin'@'%'IDENTIFIEDBY'your_strong_password';

使用%允许远程连接,若仅本地使用可改为'localhost'

验证:

SELECTuser,hostFROMmysql.userWHEREuser='at133_admin';

6. 赋予数据库权限

GRANTALLPRIVILEGESONat133.*TO'at133_admin'@'%';

MySQL 8.0 中GRANT会隐式刷新权限,无需再执行FLUSH PRIVILEGES


7. 验证授权

SHOWGRANTSFOR'at133_admin'@'%';

预期输出GRANT ALL PRIVILEGES ON \at133`.*`,确认无法管理其他库。


8. 业务用户登录测试

exit# 退出 rootmysql-uat133_admin-p

查看可访问的库:

SHOWDATABASES;

预期输出中包含at133information_schema

information_schema是 MySQL 系统库,所有用户均可查看(无权限修改),可以忽略。


9. 日常导出与导入(关键:业务账号可自行导入)

9.1 正确的导出命令(管理员执行)

导出时必须抑制建库语句,否则业务用户会因缺少全局权限而导入失败。

mysqldump-uroot-pat133 --no-create-db>at133_backup.sql

--no-create-db确保 SQL 文件中不含CREATE DATABASE,仅包含表结构和数据。

9.2 业务用户自行导入

开发人员拿到备份文件后,使用自己的业务账号导入(注意:-p后不跟任何东西,用-D指定数据库):

mysql-uat133_admin-p-Dat133<at133_backup.sql

或登录后手动执行:

mysql-uat133_admin-pmysql>USE at133;mysql>source/path/to/at133_backup.sql;

所有操作均限定在at133库内,业务账号权限完全足够,无需 root

9.3 禁止的操作与常见错误

  • 禁止将包含CREATE DATABASE语句的备份(如使用了--databases或未加--no-create-db)分发给业务用户,否则导入会因权限不足直接报错。
  • 管理员自用全量备份模板(严禁外传)
    mysqldump-uroot-p--databasesat133 --single-transaction--routines--triggers>at133_full_$(date+%Y%m%d).sql
    此类文件包含建库语句,仅限 root 恢复,导入前务必再次临时备份。

10. 新人入职/接手项目检查清单

场景一:接手已存在的项目

  1. 向管理员确认项目数据库名和对应账号(如at133_admin)。
  2. 管理员用 root 为你重置密码(若遗忘):
    ALTERUSER'at133_admin'@'%'IDENTIFIEDBY'新密码';
  3. 使用分配账号登录:
    mysql-uat133_admin-p-Dat133

场景二:项目下线,清理资源

管理员执行:

DROPDATABASEIFEXISTSat133;DROPUSERIFEXISTS'at133_admin'@'%';

附录:自动化创建脚本(create_db_user.sh)

保存至/home/ideoa/create_db_user.sh密码全部通过交互式输入,不会记录在历史或进程列表中

#!/bin/bash# ==========================================# MySQL 项目数据库创建脚本# 用法:# ./create_db_user.sh 数据库名## 示例:# ./create_db_user.sh at133# ==========================================# 参数检查if[$#-ne1];thenecho"用法:"echo"$0数据库名"echoecho"示例:"echo"$0at133"exit1fiDB_NAME=$1DB_USER="${DB_NAME}_admin"echoecho"=================================="echo"数据库 :${DB_NAME}"echo"用户 :${DB_USER}"echo"=================================="# 输入 Root 密码read-s-p"请输入Root密码: "ROOT_PASSecho# 输入项目管理员密码read-s-p"请输入${DB_USER}的密码: "DB_PASSecho# 使用环境变量避免密码出现在进程列表exportMYSQL_PWD="$ROOT_PASS"# 检查 Root 是否能登录if!mysqladminping-uroot--silent>/dev/null2>&1;thenechoecho"错误:Root密码错误或MySQL服务未启动!"unsetMYSQL_PWDexit1fi# 创建数据库和用户mysql-uroot<<EOF CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\`DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASS}'; ALTER USER '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASS}'; GRANT ALL PRIVILEGES ON \`${DB_NAME}\`.* TO '${DB_USER}'@'%'; FLUSH PRIVILEGES; EOFRESULT=$?# 清理密码变量unsetMYSQL_PWD# 判断执行结果if[$RESULT-ne0];thenechoecho"=================================="echo"创建失败!"echo"=================================="exit1fiechoecho"=================================="echo"创建成功"echo"=================================="echo"数据库 :${DB_NAME}"echo"用户 :${DB_USER}"echo"密码 :${DB_PASS}"echoecho"连接示例:"echo"mysql -u${DB_USER}-p"echoecho"${DB_USER}已拥有${DB_NAME}数据库全部权限。"

赋权并执行:

chmod+x /home/ideoa/create_db_user.sh ./create_db_user.sh at133# 然后依次输入 Root 密码和新用户密码

提示:若需远程连接,请确保 MySQL 已监听0.0.0.0(见/etc/mysql/my.cnfbind-address),并配置防火墙允许 3306 端口。

http://www.gsyq.cn/news/1628352.html

相关文章:

  • 山东大学联合珠海镓未来共建宽禁带半导体技术及应用研究中心
  • WSEN-ISDS传感器与PIC18F86J15实现三维运动追踪方案
  • 戴森球计划工厂蓝图库:从零到戴森球的终极建造指南
  • 桥梁防撞系统-三层分级电子围栏船舶风险打分模型完整设计
  • 工业4-20mA电流环设计与STM32F746ZG应用实践
  • 【2026最新】Bandizip专业破解版(亲测无毒)下载安装保姆级教程(附安装包+图文)
  • 告别坐标点击:基于Poco的Android UI自动化测试实战指南
  • 国内MBTI测试平台选择指南:科学测评助力自我认知
  • KMR221与MKV42F128VLH16的嵌入式电源管理设计
  • 如何用一套PHP接口免费获取四大音乐平台播放地址
  • 开源7自由度仿人机械臂:如何构建高性价比的物理AI研究平台?
  • 音乐歌词批量下载神器:163MusicLyrics 一站式歌词管理指南 [特殊字符]
  • VMPDump完全手册:高效破解VMProtect代码保护的专业逆向工程工具
  • 快速上手utdnsmasq:10分钟搭建你的DNS服务器
  • 实战指南:如何用Real-ESRGAN-ncnn-vulkan高效实现图像超分辨率
  • HEIF Utility:5分钟掌握Windows平台HEIF图片查看与转换的终极解决方案
  • 博途PLC的值传输与指针传输
  • IS31FL3731 LED驱动与PIC24微控制器的应用指南
  • 造形家和Hektar有什么区别?一篇看懂实景建模与生成式规划推演
  • 数据结构查找算法大全
  • 我们调研了四个AI编程平台的2.5万个Skill,发现Agent生态正在发生这五件事
  • 解决Windows 11系统安装引导-无法识别到硬盘/存储驱动器
  • ASM330LHH与PIC18F4455在运动跟踪中的优化实践
  • 技术深度解析:纽约市出租车与网约车大数据处理架构实践
  • 3步解锁跨平台应用:Windows直接运行Android的终极方案
  • VRRTest:终极可变刷新率检测工具完整指南
  • 嵌入式系统中DS28EC20 EEPROM的应用与优化
  • 学术写作新纪元!2026全能型AI论文写作工具终极指南
  • utdnsmasq架构深度剖析:Rust模块设计与核心组件
  • RTSPtoWeb深度解析:如何用纯Golang实现RTSP到Web视频流的无缝转换