当与非root用户和--routines
标志一起使用mysqldump
时,我得到以下错误消息:
mysqldump: <user> has insufficient privileges to SHOW CREATE FUNCTION `<function name>`!
此外,mysqldump
提示了这个问题:
-- insufficient privileges to SHOW CREATE FUNCTION `<function name>`
-- does <user> have permissions on mysql.proc?
这似乎很清楚,直到我真正尝试了一下,发现mysql.proc
在MySQL 8中不受欢迎。我找不到新的等价物,也找不到为什么mysqldump
一开始就建议使用一个不推荐使用的表。我的mysqld
和mysqldump
都是8.0.21版本。
使用GRANT ALL PRIVILEGES ON *.* TO <user>
"解决"了这个问题,并允许用户导出函数,但对于生产系统来说,这显然不是一个实用的解决方案。
那么,新的GRANT
或专门允许用户使用SHOW CREATE FUNCTION
的设置是什么呢?
GRANT SHOW_ROUTINE ON *.* TO 'user'@'localhost;
https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_show-常规