Mysql数据库指定某数据库或某表赋予增删改查操作权限各类划分权限的方法总结实战

一、mysql创建用户只赋予指定数据库的增删改查操作权限

在日常生产运维工作中,我们经常需要给其他厂商或者合作伙伴提供数据库的账号,并且需要指定某个用户只能查询指定的数据库,并且赋予增删改查的指定权限。

(1)创建某个用户,赋予只能操作(增、删、改、查)指定某个数据库,并且其他数据库看不到,只能看到指定的数据库

bash 复制代码
CREATE USER '用户名'@'%' IDENTIFIED BY '登录数据库的密码';
GRANT SELECT, INSERT, UPDATE, DELETE ON `数据库名称`.* TO '用户名'@'%';

(2)创建某个用户,赋予只能查询指定某个数据库的所有表,其他数据库完全看不到!

bash 复制代码
CREATE USER '用户名'@'%' IDENTIFIED BY '登录数据库的密码';
GRANT SELECT  ON `数据库名称`.* TO '用户名'@'%';

(3)创建某个用户,只能查询指定数据库的某个表,该库其他表都看不到!其他数据库完全看不到!

bash 复制代码
CREATE USER '用户名'@'%' IDENTIFIED BY '登录数据库的密码';
GRANT SELECT ON `数据库名称`.`表名` TO '用户名'@'%';

(4)创建某个用户,只能操作(增、删、改、查)指定数据库的某个表,该库其他表都看不到!其他表也操作不了!

bash 复制代码
CREATE USER '用户名'@'%' IDENTIFIED BY '登录数据库的密码';
GRANT SELECT, INSERT, UPDATE, DELETE ON `数据库名称`.`表名` TO '用户名'@'%';

(5)创建某个用户,只能查询指定数据库的某个表,该库其他表都看不到!并且指定数据库用户登录的IP地址!其他IP无法登录!

bash 复制代码
CREATE USER '用户名'@'IP地址' IDENTIFIED BY '登录数据库的密码';
GRANT SELECT ON `数据库名称`.`表名` TO '用户名'@'IP地址';

总结一下运维常用的几种赋予权限的方法!

二、将A服务器的MYSQL的所有用户权限复制迁移到B服务器MYSQL的方法

在日常生产运维工作中,我们经常需要迁移服务器,如果源服务器上的用户建立的非常多,并且还在生产上用着,整个迁移过程就很繁琐,如果漏了,会导致生产事故,笔者介绍一种MYSQL服务器用户权限的迁移方法,方便简单,节省工作量。

MYSQL导出所有用户权限shell脚本实例觉得有效

实际生产生活中,我经常要迁移MYSQL服务器,需要导出数据库的所有用户名密码以及权限。
给大家一个确定可行的shell脚本实例

bash 复制代码
cd /home/
bash 复制代码
touch exp_grant.sh
bash 复制代码
chmod 777 exp_grant.sh
bash 复制代码
vim exp_grant.sh
bash 复制代码
#!/bin/bash

#Function export user privileges

  

pwd=123456  #root的密码

expgrants()

{

  mysql -B -u'root' -p${pwd} -N $@ -e "SELECT CONCAT(

    'SHOW GRANTS FOR ''', user, '''@''', host, ''';'

    ) AS query FROM mysql.user" | \

  mysql -u'root' -p${pwd} $@ | \

  sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;}'

}

expgrants > ./grants.sql
bash 复制代码
sh exp_grant.sh #执行命令
bash 复制代码
-- Grants for nasen@% 
GRANT USAGE ON *.* TO `nasen`@`%`;

-- Grants for root@% 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION;

-- Grants for mysql.infoschema@localhost 
GRANT SELECT ON *.* TO `mysql.infoschema`@`localhost`;
GRANT AUDIT_ABORT_EXEMPT,SYSTEM_USER ON *.* TO `mysql.infoschema`@`localhost`;

-- Grants for mysql.session@localhost 
GRANT SHUTDOWN, SUPER ON *.* TO `mysql.session`@`localhost`;
GRANT AUDIT_ABORT_EXEMPT,BACKUP_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,SESSION_VARIABLES_ADMIN,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN ON *.* TO `mysql.session`@`localhost`;
GRANT SELECT ON `performance_schema`.* TO `mysql.session`@`localhost`;
GRANT SELECT ON `mysql`.`user` TO `mysql.session`@`localhost`;

-- Grants for mysql.sys@localhost 
GRANT USAGE ON *.* TO `mysql.sys`@`localhost`;
GRANT AUDIT_ABORT_EXEMPT,SYSTEM_USER ON *.* TO `mysql.sys`@`localhost`;
GRANT TRIGGER ON `sys`.* TO `mysql.sys`@`localhost`;
GRANT SELECT ON `sys`.`sys_config` TO `mysql.sys`@`localhost`;

去另个服务器执行即可, 当然各个用户的密码仍然需要重新定义!!!!!!!

相关推荐
eggwyw21 分钟前
完美解决phpstudy安装后mysql无法启动
数据库·mysql
LaughingZhu28 分钟前
Product Hunt 每日热榜 | 2026-03-23
数据库·人工智能·经验分享·神经网络·chatgpt
2401_8942419236 分钟前
用Pygame开发你的第一个小游戏
jvm·数据库·python
java修仙传1 小时前
MySQL 事务隔离级别详解
数据库·mysql·oracle
Irissgwe1 小时前
MySQL存储过程和触发器专题
数据库·mysql·oracle
椎4951 小时前
Redis day02-应用-实战-黑马点评-短信登录
数据库·redis·spring
瀚高PG实验室2 小时前
易智瑞GeoScene Pro连接瀚高安全版数据库 458
数据库·安全·瀚高数据库
551只玄猫2 小时前
【数据库原理 实验报告3】索引的创建以及数据更新
数据库·sql·课程设计·实验报告·操作系统原理
加农炮手Jinx2 小时前
Flutter for OpenHarmony:postgrest 直接访问 PostgreSQL 数据库的 RESTful 客户端(Supabase 核心驱动) 深度解析与鸿蒙适配指南
数据库·flutter·华为·postgresql·restful·harmonyos·鸿蒙