今天在测试mysqldump远程备份的时候,发现同样的备份权限、语句在远程无法使用,提示:
  mysqldump: Couldn't execute 'show create table `general_log`': Table 'mysql.general_log' doesn't exist
  mysqldump: Couldn't execute 'show create table `slow_log`': Table 'mysql.slow_log' doesn't exist
  推测是客户端mysqldump的版本与mysql-server版本差异导致,解决方法为往mysql里面插入这2张
 
SQL Code复制内容到剪贴板
  1. mysql -p*****  
  2. use mysql;  
  3. CREATE TABLE IF NOT EXISTS general_log (  
  4. event_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
  5. user_host mediumtext NOT NULL,  
  6. thread_id int(11) NOT NULL,  
  7. server_id int(10) unsigned NOT NULL,  
  8. command_type varchar(64) NOT NULL,  
  9. argument mediumtext NOT NULL  
  10. ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';  
  11. CREATE TABLE IF NOT EXISTS slow_log (  
  12. start_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
  13. user_host mediumtext NOT NULL,  
  14. query_time time NOT NULL,  
  15. lock_time time NOT NULL,  
  16. rows_sent int(11) NOT NULL,  
  17. rows_examined int(11) NOT NULL,  
  18. db varchar(512) NOT NULL,  
  19. last_insert_id int(11) NOT NULL,  
  20. insert_id int(11) NOT NULL,  
  21. server_id int(10) unsigned NOT NULL,  
  22. sql_text mediumtext NOT NULL  
  23. ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';  
  24. quit;  
 
 
  然后就可以远程备份了。
  mysqldump备份的用户需要很高的权限,只要赋予 select,LOCK TABLES 即可,如:
  grant SELECT,LOCK TABLES on *.* to backMysqltest@'192.168.1.9' identified by 'fNm@!cgPJKr94$0y';