使用 mysqlpump 导出用户时,报错如下:
[mysql@cjc-db-01 cjc]$ mysqlpump -uroot -p --set-gtid-purged=OFF --exclude-databases=% --users --exclude-users=root,mysql.session,mysql.sys,monitor,dumper,eisoo,repluser,dbatmp> /bak/cjc/master_mysql_bak_user_20260529.sql terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid Aborted
怀疑服务器上部署了多个不同版本的MySQL。
[root@cjc-db-01 ~]# which mysql /usr/bin/mysql
默认使用的是 8.0.27
[root@cjc-db-01 ~]# mysql --version mysql Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL) [root@cjc-db-01 ~]# rpm -qa|grep -i mysql mysql-community-client-plugins-8.0.27-1.el7.x86_64 mysql-community-client-8.0.27-1.el7.x86_64 mysql-community-devel-8.0.27-1.el7.x86_64 mysql-community-embedded-compat-8.0.27-1.el7.x86_64 mysql-community-common-8.0.27-1.el7.x86_64 mysql-community-server-8.0.27-1.el7.x86_64
但实际正在运行的是二进制包安装的MySQL 8.0.32,不是默认 RPM包安装的MySQL 8.0.27。
使用 MySQL 8.0.27 的 mysqlpump 工具,备份 8.0.32 的用户数据,版本不兼容,报错:
terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid Aborted
导出时,指定 绝对路径,可以正常导出
/mysqldata/cjc/8.0.32/bin/mysqlpump -uroot -p --set-gtid-purged=OFF --exclude-databases=% --users --exclude-users=root,mysql.session,mysql.sys,monitor,dumper,eisoo,repluser,dbatmp> /bak/cjc/master_mysql_bak_user_20260529.sql
欢迎关注我的公众号《 IT小Chen》
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-3182992/ ,如需转载,请注明出处,否则将追究法律责任。