mysqldump: dumper has insufficent privileges to SHOW CREATE FUNCTION

本文记录了一次MySQL数据库备份过程中遇到的问题及解决方案。作者尝试备份test_db数据库时遭遇失败,即便授予用户全部权限也未能解决问题。最终发现是由于自定义函数的创建者标识导致的,并通过调整备份策略解决了该问题。

问题如上所示

        业务需要准备备份test_db,包括结构+数据+自定义函数

        我的操作过程如下

         grant select,lock tables on test_db.* to 'dumper'@'127.0.0.1' identified by 'bak' ;

                    ↓

         mysqldump -h127.0.0.1 -P3306 -pbak -udumper test_db -d > /home/databak/dumper2_bak.sql

         发现问题后,觉得是权限的问题,那就简单点,直接赋予全部权限

         grant all privileges on core_db.* to 'dumper'@'127.0.0.1' identified by 'bak' ;

         还是报错,如题目所示。疑问疑问疑问

         查了很多资料,后来觉得肯定不是权限的问题,因为授权了全部的权限。

       

          那只有查看数据库实例上的自定义函数有什么特别之处了。

        

     CREATE DEFINER = `202producer`@`%` FUNCTION `NewProc


         原来带了标识,终于找到位置了。可是怎么办呢,有没有好的解决方法呢?

          思路是这样,用root创建test_db,再建立一个www用户,授权全部的操作(test_db),所有对test_db的操作都使用www用户。

          之后,进行备份和还原就可以了

          问题还没有解决,只好对自定义函数不进行备份了

          谁有更好的方法,欢迎指导

当遇到 mysqldump 无法创建或写入文件 'D:\MySQLBackup' 的问题时,可以从以下几个方面来解决: ### 权限问题 - **以管理员身份运行命令提示符**:如之前提到关闭 MySQL 后,重新以管理员身份打开 cmd 来执行操作。示例中就是以管理员身份执行 `mysqldump -T C:/backup test person -u root -p` 避免权限不足的问题 [^1]。 - **检查文件和文件夹权限**:确保当前用户对 'D:\MySQLBackup' 所在的文件夹有写入权限。可以手动右键该文件夹,选择“属性”,在“安全”选项卡中检查并修改权限,确保当前使用的用户有写入和创建文件的权限。 ### 路径问题 - **确认路径是否正确**:检查路径 'D:\MySQLBackup' 是否存在拼写错误或者路径中的文件夹是否存在。如果文件夹不存在,可以手动创建该文件夹,或者在命令中先创建文件夹。例如,在 Linux 系统中可以使用 `mkdir -p D:/MySQLBackup`(在 Windows 系统中可使用资源管理器手动创建)。 - **使用完整路径和引号**:如果路径包含空格或特殊字符,需要使用引号将路径括起来。例如:`mysqldump -u root -p --all-databases > "D:\MySQLBackup\full_backup.sql"` [^2]。 ### 命令选项问题 - **检查命令参数**:确保使用的 mysqldump 命令参数正确。例如,要备份所有数据库可以使用 `-A` 选项,指定特定数据库可以使用 `-B` 选项等。如 `mysqldump -A -uroot -ppasswd > /home/neoska/backup/data/`date +%Y%m%d`/mysqldumpall.sql` [^4]。 ### 数据库连接问题 - **确认数据库连接正常**:如果在执行 mysqldump 时出现连接错误,如 `mysqldump: Got error: 1045: Access denied for user ‘root’@‘localhost’ (using password: NO)`,需要检查用户名、密码是否正确,以及是否有足够的权限进行备份操作 [^2]。 ### 磁盘空间问题 - **检查磁盘空间**:确保 'D' 盘有足够的空间来创建和写入备份文件。可以通过资源管理器查看磁盘的可用空间。 ### 代码示例 以下是一个在 Windows 系统中以管理员身份执行的完整示例: ```bash # 以管理员身份打开 cmd 后执行 mysqldump -u root -p --all-databases > "D:\MySQLBackup\full_backup.sql" ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值