mysqld_multi stop 命令必须凭借有效的 user & password 配置去管理相应的实例
如果无法使用 stop 命令关闭实例,可以通过一下步骤排查解决
1、在设置了实例的帐号密码后,可以检查下 mysqld_multi 的配置参数 在 5.7 版本后,你会发现
# 你会发现 password 是密文
[root@localhost ~]# my_print_defaults mysqld_multi
--mysqld=/usr/local/mysql/bin/mysqld_safe
--mysqladmin=/usr/local/mysql/bin/mysqladmin
--user=root
--password=*****
# 则使用 -s 选项才可以明文读取
[root@localhost ~]# my_print_defaults mysqld_multi -s
--mysqld=/usr/local/mysql/bin/mysqld_safe
--mysqladmin=/usr/local/mysql/bin/mysqladmin
--user=root
--password=123456
这里我们直接把 password 配置项改为 pass,可以明文获取
#这里我们直接将配置名改为 pass 后即可明文获取
[root@localhost ~]# my_print_defaults mysqld_multi
--mysqld=/usr/local/mysql/bin/mysqld_safe
--mysqladmin=/usr/local/mysql/bin/mysqladmin
--user=root
--pass=123456
5.6 之前的版本并不会
这里的 user 和 password 是数据库实例的有效帐号密码,如果你使用 mysqld_multi 方式管理多实例这里建议为实例统一添加一对相同的账号密码然后配置到 [mysqld_multi] 组中,方便管理
2、如果以上方法仍未解决,可以查看 mysqld_multi.log 日记文件的错误信息,应该是 [mysqld_multi] 配置中帐号密码无效,则可使用 mysqladmin 命令进行关闭
[root@localhost ~]# mysqladmin -uroot -pyourpassword -S /tmp/mysqlxxxx.sock shutdown
如果还不行,那可以试下授权 shutdown 权限给用户,依然不行那就该怀疑你是不是合法用户了.....
为