運維 - 阿里云服務器 mysqldump導出sql文件,在導入的過程中報權限錯誤
問題描述
寫了一個php腳本做定時復制數據庫的工作(1. 不要問我為什么不用linux 2.不要問我為什么不用主從同步。都是業務需要 我也沒辦法。)
<?phperror_reporting(0);$DB = [ ’remote’=>['dsn'=>'mysql:host=xxx.xxx.xxx.xxx;dbname=dbname','ip'=>'xxx.xxx.xxx.xxx','username'=>'username','password'=>'password' ], ’local’=>['dsn'=>'mysql:host=xxx.xxx.xxx.xxx;dbname=dbname','ip'=>'xxx.xxx.xxx.xxx','username'=>'username','password'=>'password', ]];$conf = [ ’mysql_root’=>’D:wampbinmysqlmysql5.6.17bin’, ’dump_folder’=>’G:’, ’db_name’=>’db_name’, ’table_name’=>’table_name’];$pdo = new PDO($DB['remote']['dsn'], $DB['remote']['username'], $DB['remote']['password']);do { $result = $pdo->query('select max(id) as max from '.$conf[’table_name’])->fetchAll(); $max = $result[0][’max’]; // 獲取最大的id // 通過mysqldump導出sql文件 $dump_shell = $conf[’mysql_root’].’mysqldump -h’.$DB[’local’][’ip’].’ -u’.$DB[’local’][’username’].’ -p’.$DB[’local’][’password’].’ -t fuscent --table ’.$conf[’table_name’].’ --default-character-set=utf8 --single-transaction --skip-add-locks -w'id>’.$max.’'>’.$conf[’dump_folder’].’’.$conf[’table_name’].’.sql’; exec($dump_shell); // mysql < xxx.sql 導入sql文件 $source_shell = $conf[’mysql_root’].’mysql -h’.$DB[’remote’][’ip’].’ -u’.$DB[’remote’][’username’].’ -p’.$DB[’remote’][’password’].’ ’.$conf[’db_name’].’ -e'’.$conf[’dump_folder’].’’.$conf[’table_name’].’'.sql'’; exec($source_shell); sleep(60); // 等待*秒鐘} while (true);
無論在導入的過程中使用
source xxx.sql
或者
mysql < xxx.sql
的方法,都會報出以下錯誤
ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
請問這是為什么啊?我的權限也沒有問題啊。有人遇到過這種情況嗎?
問題解答
回答1:導入操作等這類全局操作必須用root賬號。
