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

例:用户: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;

 

 

 

 

 

[假如此处有分隔线]

转载:https://blog.csdn.net/yue_2018/article/details/89784466

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,你可以使用MySQLdb或pymysql等库来连接和操作MySQL数据库。首先,你需要确保已经安装了相应的库。 引用中提到了使用pip来安装mysqlclient模块。你可以使用以下命令在Python中安装mysqlclient模块: pip install mysqlclient 接下来,你需要在你的Python代码中导入必要的模块和函数。例如,你可以使用以下代码导入MySQLdb模块: import MySQLdb 或者,如果你使用pymysql库,你可以使用以下代码导入pymysql模块: import pymysql 接下来,你需要编写数据库连接函数。引用中提供了一个示例代码,你可以根据自己的需求进行修改: ```python import pymysql def dbConnect(): db = pymysql.connect(host='localhost', user='root', password='1234abcd!', database='studb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) return db ``` 在这个函数中,你需要根据你的数据库设置来填写相应的主机名、用户名、密码、数据库名等信息。通过调用这个函数,你可以连接到数据库并返回一个数据库对象。 至于储存函数的具体实现,你可以使用MySQLdb或pymysql提供的方法来执行SQL语句。例如,你可以使用以下代码来执行一个储存函数: ```python import MySQLdb def save_function(): db = MySQLdb.connect(host='localhost', user='root', password='1234abcd!', database='studb', charset='utf8mb4', cursorclass=MySQLdb.cursors.DictCursor) cursor = db.cursor() cursor.execute("CREATE FUNCTION my_function() RETURNS INT BEGIN DECLARE result INT; SET result = 1 + 1; RETURN result; END") db.commit() db.close() ``` 以上代码演示了如何创建一个储存函数并将其插入到数据库中。你可以根据自己的需求修改SQL语句。 希望这些信息对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python调用mysql存储过程](https://blog.csdn.net/zyk2905/article/details/130729020)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python封装函数实现MySQL数据库增删改和数据存储](https://blog.csdn.net/qq_25888559/article/details/123960589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值