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`;

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

相关推荐
瀚高PG实验室8 分钟前
使用pg_stat_statements抓取数据库TOP SQL
数据库·sql·postgresql·瀚高数据库
yanwumuxi2 小时前
【数据库系列】opensearch数据备份和恢复
数据库
anxiao_m2 小时前
2026企业AI数字孪生选型攻略,不同场景对应不同解决方案
大数据·网络·数据库
SelectDB2 小时前
从 ClickHouse 迁移到 Doris:SQL 兼容、同步与验证清单(实战笔记)
大数据·数据库·数据分析
这个DBA有点耶2 小时前
非关系型数据库到底有几种?键值、文档、列族、图,一篇讲透
mysql·架构·nosql
SelectDB2 小时前
Doris 还是 ClickHouse?一张表说清 6 个关键差异(实战笔记)
大数据·数据库·数据分析
oradh3 小时前
Oracle Undo问题总结(两类Undo表空间不足和单个会话占用大量Undo的性能问题)
数据库·oracle
企业数字化笔记3 小时前
固定资产财务账与实物账怎么对账?折旧快照、差异检测与SQL核对
android·数据库·sql
DBA_G3 小时前
GBase 8a表空间多路径存储数据迁移链路适配解析
数据库·oracle
java1234_小锋3 小时前
Tornado 6.5,全面支持 Python 3.14
数据库·python·tornado