欢迎光临
顺子の杂货铺

Mysqld_multi Stop Bug

最近在做mysqld_multi管理多实例的时候,发现stop不了节点 这是什么原因呢? 多实例相关配置如下:

[mysqld_multi]  
mysqld     = /usr/local/mysql/bin/mysqld_safe  
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /usr/local/mysql/mysqld_multi.log
user       = root
password   = shunzi

[mysqld3306]  
socket     = /data/mysql3306/tmp/mysql3306.sock
port       = 3306  
user       = mysql

pid-file   = /data/mysql3306/mysql3306.pid  
datadir    = /data/mysql3306/data
tmpdir     = /data/mysql3306/tmp

[mysqld3307]  
socket     = /data/mysql3307/tmp/mysql3307.sock
port       = 3307  
user       = mysql

pid-file   = /data/mysql3307/mysql3307.pid  
datadir    = /data/mysql3307/data
tmpdir     = /data/mysql3307/tmp

执行mysqld_multi stop 3306时日志报error:

mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
mysqld_multi log file version 2.16; run: Thu Aug 31 21:09:02 2017

这里显示密码错误,手动登录是没有问题的。 这是mysqld_multi的一个bug,详细信息如下 https://bugs.mysql.com/bug.php?id=77227

解决方法是:

修改mysqld_multi文件中的defaults_for_group函数
        211 sub defaults_for_group
        212 {
        213   my ($group) = @_;
        214 
        215   return () unless $my_print_defaults_exists;
        216 
        217   my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
        219   my @defaults = $com;
        220   chomp @defaults;
        221   return @defaults;
        222 }
        ==========================

        把 my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
        替换为: my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;

在此记录一下!

赞(0) 打赏
未经允许不得转载:順子の杂货铺 » Mysqld_multi Stop Bug
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏