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

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

相关推荐
herinspace23 分钟前
管家婆实用贴-如何分离和附加数据库
开发语言·前端·javascript·数据库·语音识别
步辞1 小时前
Go语言怎么用channel做信号通知_Go语言channel信号模式教程【完整】
jvm·数据库·python
weixin_424999362 小时前
mysql行级锁失效的原因排查_检查查询条件与执行计划
jvm·数据库·python
Polar__Star2 小时前
uni-app怎么实现App端一键换肤 uni-app全局样式动态切换【实战】
jvm·数据库·python
南境十里·墨染春水3 小时前
linux学习进展 进程间通讯——共享内存
linux·数据库·学习
LinuxGeek10243 小时前
Kylin-Server-V11、openEuler-22.03和openEuler-24.03的MySQL 9.7.0版本正式发布
大数据·mysql·kylin
斯维赤3 小时前
Python学习超简单第八弹:连接Mysql数据库
数据库·python·学习
Chuer_3 小时前
讲透财务Agent核心概念,深度拆解财务Agent应用趋势
大数据·数据库·安全·数据分析·甘特图
gushinghsjj3 小时前
什么是主数据管理平台?怎么构建主数据管理平台?
大数据·数据库
Generalzy3 小时前
TinyDB轻量文档数据库
数据库