mysql error:1449权限问题 及 用户授权

一、权限问题

Got error: 1449: The user specified as a definer ('skip-grants user'@'skip-grants host') does not exist when using LOCK TABLES

在迁移数据库时,定义的definer,在两个数据库之间不同步时,要将不存在的definer改成数据库中已有的用户。

1、修改存储过程

sql 复制代码
UPDATE `mysql`.`proc` SET definer = 'root@%' WHERE definer='skip-grants user'@'skip-grants host'

2、修改视图

本来尝试和修改存储过程类似的方式,但是总是被拒绝访问,所以找了别的方法。

先生成修改的sql语句:

sql 复制代码
SELECT CONCAT("ALTER DEFINER=`你要改的definer` VIEW ", 
table_schema,".",table_name, " AS ", view_definition, ";") 
FROM information_schema.views ;

其中:table_schema=数据库;table_name=表名;

如果只要修改指定的数据库或者指定的definer,在上面的SQL后拼个条件:WHERE table_schema='database' or definer = 'older_definer' 即可;

执行完上面的sql后,会产生一些alter语句:

将这些语句成功执行后,definer就被修改了。

二、用户授权

最大权限

sql 复制代码
-- 授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';
-- 刷新
FLUSH PRIVILEGES;

部分权限:

sql 复制代码
-- 创建用户
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
 
-- 授权用户操作数据库的权限
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.table_name TO 'username'@'hostname';
 
-- 刷新权限,使授权生效
FLUSH PRIVILEGES;

三、完结啦

相关推荐
一叶屋檐7 分钟前
Neo4j 图书馆借阅系统知识图谱设计
服务器·数据库·cypher
好吃的肘子1 小时前
MongoDB 应用实战
大数据·开发语言·数据库·算法·mongodb·全文检索
weixin_472339461 小时前
MySQL MCP 使用案例
数据库·mysql
lqlj22332 小时前
Spark SQL 读取 CSV 文件,并将数据写入 MySQL 数据库
数据库·sql·spark
遗憾皆是温柔3 小时前
MyBatis—动态 SQL
java·数据库·ide·sql·mybatis
未来之窗软件服务3 小时前
Cacti 未经身份验证SQL注入漏洞
android·数据库·sql·服务器安全
fengye2071613 小时前
在MYSQL中导入cookbook.sql文件
数据库·mysql·adb
拓端研究室TRL4 小时前
Python与MySQL网站排名数据分析及多层感知机MLP、机器学习优化策略和地理可视化应用|附AI智能体数据代码
人工智能·python·mysql·机器学习·数据分析
Ailovelearning4 小时前
neo4j框架:ubuntu系统中neo4j安装与使用教程
数据库·neo4j
_星辰大海乀5 小时前
表的设计、聚合函数
java·数据结构·数据库·sql·mysql·数据库开发