我正在运行10.5.12-MariaDB,并试图对包括用户帐户/密码和赠款在内的所有数据库进行完全备份,但不知怎么的,我无法获得授权的备份,所以我遗漏了一些东西。
举例说明。
采取完全备份
old-DB # mysqldump --opt --all-databases > /root/openstack.sql恢复到新的DB服务器
new-DB # mysql < openstack.sql现在,我可以看到mysql.user表中的所有数据库和所有用户,但是所有用户都缺少授权。
示例:
old-DB # mysql -e 'show grants for glance';
+-------------------------------------------------------------------------------------------------------+
| Grants for glance@% |
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `glance`@`%` IDENTIFIED BY PASSWORD '*6FE1E5E532A9189C900FB696AC9DEF84CDE2194A' |
| GRANT ALL PRIVILEGES ON `glance`.* TO `glance`@`%` |
+-------------------------------------------------------------------------------------------------------+在新的DB服务器上缺少它
new-DB# mysql -e 'show grants for glance';
ERROR 1141 (42000) at line 1: There is no such grant defined for user 'glance' on host '%'所以我做了
old-DB# mysql --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql现在,MySQLUserGrants.sql拥有所有用户授予的命令,所以我只需复制“粘贴所有命令”并将其粘贴到新-DB中,我得到了以下错误:
MariaDB [(none)]> GRANT USAGE ON *.* TO `glance`@`%` IDENTIFIED BY PASSWORD '*6FE1E5E532A9189C900FB696AC9DEF84CDE2194A';
ERROR 1133 (28000): Can't find any matching row in the user table问题是,我如何采取完整的mysql备份,其中包括一切,甚至包括赠款。(或者我是不是漏掉了什么?)
发布于 2021-09-15 17:04:02
是。您可以使用--system交换机。这只存在于MariaDB版本的mysqldump中,尽管您可以使用它从MySQL数据库转储。
system=users将为您的用户转储CREATE USER ...和GRANT ...语句,并授予:
mysqldump --opt --system=users --insert-ignore --all-databases > /root/openstack.sql在导入转储时,--insert-ignore选项对于避免与现有用户发生冲突非常重要。该选项将导致CREATE USER IF NOT EXISTS语句,而不仅仅是CREATE USER语句。
要真正包含所有内容,请使用--system=all。
请参阅MariaDB KB 米斯德和手册页中的文档(搜索--system)。
这是最近的一个特性,已经移植到MariaDB 10.2和更高版本。
发布于 2021-09-15 18:48:35
从逻辑上说,你在做正确的事情,支持助学金。
大约7.5年前,我推荐了同样的方法:导出所有MySQL用户
您还可以使用pt-表演-赠款并将FLUSH PRIVILEGES;附加到输出中。
(
pt-show-grants ...
echo "FLUSH PRIVILEGES;"
) > user_grants.sqlhttps://dba.stackexchange.com/questions/299650
复制相似问题