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;

三、完结啦

相关推荐
暮乘白帝过重山几秒前
ArkTS ForEach 参数解析:组件与键值生成器
开发语言·数据库
菜鸟plus+38 分钟前
N+1查询
java·服务器·数据库
子夜江寒40 分钟前
MySQL 表创建与数据导入导出
数据库·mysql
菜鸟小九1 小时前
redis基础(安装配置redis)
数据库·redis·缓存
保定公民1 小时前
达梦数据库使用cp备份集恢复报错分析与解决
数据库
wd_cloud2 小时前
QT/6.7.2/Creator编译Windows64 MySQL驱动
开发语言·qt·mysql
少废话h3 小时前
Redis主从与集群搭建全指南
大数据·linux·redis·mysql
中冕—霍格沃兹软件开发测试3 小时前
测试用例库建设与管理方案
数据库·人工智能·科技·开源·测试用例·bug
The star"'3 小时前
mysql(4-7)
数据库·mysql·adb
The star"'3 小时前
mysql(1-3)
运维·mysql·云计算