mysql授予用户创建表的权限
1.添加账户:# 创建一个密码为123456的testuser账户# 若不写【identified by ‘123456‘】则创建一个密码为空的testuser账户mysql> create user...
2024.11.15前段时间在做数据库备份时提示:
mysqldump: Couldn‘t execute ‘SHOW FIELDS FROM `v_ocs_group_production_lines1`‘: select command denied to user ‘‘@‘%‘ for column ‘work_date‘ in table ‘t_ocs_employee_attendace‘ (1143)这个报错还是比较常见的问题之一,所以就拿来分析了。
思路:当视图的安全性为DEFINER时,数据库中存在DEFINER指定的用户,也就是图中的定义者所填写的。并且该用户拥有对应的权限,才能执行。与当前用户是否有权限无关。
当视图的安全性为INVOKER时,只要执行者有执行权限,就可以成功执行。
definer和invoker的区别:
在创建视图或者是存储过程的时候,是需要定义安全验证方式的(也就是安全性SQL SECURITY),其值可以为definer或invoker,表示在执行过程中,使用谁的权限来执行。
definer:由definer(定义者)指定的用户的权限来执行
invoker:由调用这个视图(存储过程)的用户的权限来执行
1、definer
当定义为DEFINER时,必须数据库中存在DEFINER指定的用户,并且该用户拥有对应的操作权限,才能成功执行。与当前用户是否有权限无关。
示例:
CREATE DEFINER=dev@% PROCEDURE p_user_login(IN u_name VARCHAR(25), IN u_password VARCHAR(100))BEGINSELECT u.id, u.name, u.tid, u.status, u.is_report FROM v_user u WHERE u.name=u_name AND u.password=u_password AND u.status=1;END;2、invoker
当定义为INVOKER时,只要执行者有执行权限,就可以成功执行。
示例:
CREATE DEFINER=dev@% PROCEDURE p_user_login(IN u_name VARCHAR(25), IN u_password VARCHAR(100))SQL SECURITY INVOKERBEGINSELECT u.id, u.name, u.tid, u.status, u.is_report FROM v_user u WHERE u.name=u_name AND u.password=u_password AND u.status=1;END;1、查看视图这里先看下视图的一些定义。
可以看到定义者是指定用户了。
2、尝试授权这个时候是授权失败的。
mysql> grant select ON test.v_ocs_group_production_lines1 TO ‘root‘@‘localhost‘;mysql> grant select ON test.v_ocs_group_production_lines1 TO ‘root‘@‘%‘;3、修改definer4、测试测试通过。
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
1.添加账户:# 创建一个密码为123456的testuser账户# 若不写【identified by ‘123456‘】则创建一个密码为空的testuser账户mysql> create user...
2024.11.15作者:耿进爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理。对数据库技术有着浓厚的兴趣。你见过凌晨四点 MySQL 的 error 吗?本文来源:原创投稿*爱可生开...
2024.11.11概述最近一周主要是在梳理Oracle、mysql、sqlserver的权限,所以今天顺便总结下mysql用户和权限管理。MySQL用户权限表MySQL的认证是“用户”加“主机”而权限是访问资源对象,M...
2024.11.15我们在使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库。缺省状态下,mysql的默认用户没有远程访问的权限。下面给大家介绍两种方法,解决这一问题。1.1 方案1...
2024.11.15登录用管理员账号登录 mysql,在终端输入以下命令:mysql -u root -p"root”为管理员账号,输入命令后会提示输入密码,输入密码后按回车键进入 MySQL 系统新增用户创建用户命令:...
2024.11.13