mysql非root用户授权以及存储过程/函数授权

本文详细介绍了如何在MySQL中创建用户、分配权限以及管理存储过程和函数的权限。重点在于不同级别的权限授予,包括对特定数据库和表的增删改查权限,对所有数据库的全局权限,以及对存储过程和函数的执行权。此外,还讨论了DEFINER在存储过程和函数中的作用,并提醒避免使用root用户创建这些对象。最后,提到了如何查询和撤销用户权限,以及删除用户的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例:用户:username
密码:ABcd_147
数据库:testown
表:test1、test2、test3

1. 先创建用户
create user 'username'@'%' IDENTIFIED by 'ABcd_147';

2. 基础授权,三种方式
权限:
create 创建表
select 查询
insert 插入
update 更新
delete 删除
1)指定数据库、指定表并赋予增删改查权限给目标用户
GRANT select,update,insert,delete ON testown.test1 TO username@'%' IDENTIFIED BY 'ABcd_147';

GRANT select,update,insert,delete ON testown.test2 TO username@'%' IDENTIFIED BY 'ABcd_147';

GRANT select,update,insert,delete ON testown.test3 TO username@'%' IDENTIFIED BY 'ABcd_147';

2) 指定数据库并赋予增删改查权限给目标用户
GRANT select,update,insert,delete ON testown.* TO username@'%' IDENTIFIED BY 'ABcd_147';

3)指定所有权限
GRANT all privileges ON *.* TO username@'%' IDENTIFIED BY 'ABcd_147';

3.存储过程、函数授权

1)存储过程、函数授权

权限:

create routine 创建存储过程、函数

alter routine 修改或删除存储过程、函数

execute 执行或调用存储过程、函数

授权:

GRANT create routine ON testown.* TO username@'%' IDENTIFIED BY 'ABcd_147';

GRANT alter routine ON testown.* TO username@'%' IDENTIFIED BY 'ABcd_147';

GRANT execute ON testown.* TO username@'%' IDENTIFIED BY 'ABcd_147';

存储过程和函数如果是root创建的话普通用户是无法查看和调用的,此时需考虑DEFINER。

在创建存储过程、函数时会默认指定DEFINER

(查询mysql手册:SQL SECURITY { DEFINER | INVOKER } :指明谁有权限来执行。

DEFINER 表示按定义者拥有的权限来执行;INVOKER 表示用调用者的权限来执行。)

虚拟机重新建一个mysql连接:发现root实际操作的数据库和普通用户操作的数据库之间少了mysql(原因有查阅到大佬的博客,下附转载链接)

2)重新授权mysql库给普通用户

GRANT all privileges ON mysql.* TO username@'%' IDENTIFIED BY 'ABcd_147';

3)用普通用户打开可以查看和调用

提示:以上存储过程和函数尽量由相应的用户来创建,尽量不要用root创建,否则就会出现这种尴尬的问题。

4. 刷新权限
flush  privileges;

5. 登录目标用户测试

6. 其他
1)删除权限
REVOKE select,update,insert,delete ON zkry_xz_mszj.* from username@'%';
2)删除用户
delete from mysql.user where user='username' and host='%';(这个语句不能完全删除user='username')
3)完全删除用户
drop user 'username';

7.用户权限查询
1)用户表查询
select * from mysql.user where user = 'username';
2)授权查询
show grants from username;

[假如此处有分隔线]

转载:记一次mysql神奇现象--root可以看到函数内容,普通用户看不到?_阿里云rdsmysql写完函数在别的用户不显示-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值