mysql实现nextVal功能

创建表失败,是权限问题。

ErrorCode:1 4 4 9 是标准错误。
root@%没授权。

先给root授权。
比如: GRANT USAGE ON . TO 'root'@'%'; GRANT ALL PRIVILEGES ON your_db TO 'root'@'%'; FLUSH PRIVILEGES;
授权后重试创建表。
先这样。

怎么复制MySQL数据库

上周遇到MySQL还原SQL备份的问题了。

ERROR1 2 2 7 (4 2 000):Accessdenied;youneed(atleastoneof)theSUPERprivilege(s)forthisoperation。

通常是在导入视图、函数、存储过程、事件时碰到。

根本原因是账号没SUPER权限。

RDS还原时经常出现。

开发库还原到项目现场也可能出现。

处理方式有两种:
1 . 在原库修改对象所有者为导入账号。
或者修改SQLSECURITY为Invoker。

2 . 用mysqldump导出备份。
然后替换SQL文件中的对象所有者。

刚想到另一件事。

MySQL有个DEFINER和SQLSECURITY属性。

像视图、函数这些对象都有。

DEFINER是对象定义者。

SQLSECURITY决定用谁权限执行。

有DEFINER和INVOKER两个选项。

默认是DEFINER。

如果导入账号有SUPER权限。
即使对象所有者账号不存在。
也可以导入成功。

但查询时如果SQLSECURITY是DEFINER。
会报ERROR1 4 4 9 :用户不存在。

改写SQL文件的好处: 1 . 避免还原时DEFINER报错。
2 . 知道备份是否正常。
防止元数据锁卡住。

算了。