在做MYSQL主从同步时出现Access denied错误:
Access denied; you need (at least one of) the SUPER privilege(s) for this operation
原因:由于服务器原因,不能使用MYSQL的主从同步机制,只能自己用Python来实现同步。
原理:先使用
mysqldump uroot -p123456 -h192.168.0.1 mysqldatabase>mysql.sql
导出主数据库数据,然后替换sql文件里的表名,为每个表添加"_tmp"后缀
最后使用
mysql -uroot -p123456 -h192.168.0.2 db1
导入到从数据库,导入完成后删除原表,重命名_tmp表名为原表名。完成。
本地运行没有问题,到服务器上运行出现错误:
Access denied; you need (at least one of) the SUPER privilege(s) for this operation
分析:
本来以为是mysql命令出现了问题,发现mysqldump命令执行时出现一条Wanrring:
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of
all transactions, even those that changed suppressed parts of the database. If you don't
want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass
--all-databases --triggers --routines --events.
解决:修改mysqldump命令,加上“--set-gtid-purged=OFF”
mysqldump uroot -p123456 -h192.168.0.1 mysqldatabase --set-gtid-purged=OFF>mysql.sql
成功运行!
其实写这篇博,只是为了想吐槽一下:python确实很好用,可是这么久了,python3还特么没普及!