Description:
[root@ctyun ~]# netstat -lntp | grep mysql #确认mysql的多实例已经启动
tcp 0 0 :::3316 :::* LISTEN 11662/mysqld
tcp 0 0 :::3317 :::* LISTEN 11661/mysqld
多实例的配置信息
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user = multi_user
password = "abcd123"
log = /data/mysql/mysqld_multi.log
[mysqld3316]
port = 3316
innodb_data_home_dir = /data/mysql/mysql3316/data
datadir = /data/mysql/mysql3316/data
innodb_log_group_home_dir = /data/mysql/mysql3316/logs
tmpdir = /data/mysql/mysql3316/tmp
socket = /tmp/mysql3316.sock
log-bin = /data/mysql/mysql3316/logs/mysql-bin
innodb_buffer_pool_size = 100M
[mysqld3317]
port = 3317
innodb_data_home_dir = /data/mysql/mysql3317/data
datadir = /data/mysql/mysql3317/data
innodb_log_group_home_dir = /data/mysql/mysql3317/logs
tmpdir = /data/mysql/mysql3317/tmp
socket = /tmp/mysql3317.sock
log-bin = /data/mysql/mysql3317/logs/mysql-bin
确认 mysql用户的账号密码
(product)root@localhost [mysql]> select host,user,password from user;
+-----------+------------+-------------------------------------------+
| host | user | password |
+-----------+------------+-------------------------------------------+
| localhost | root | |
| localhost | multi_user | *CCB4F88E945E0E14F9BEB093EB797BB0BDBFA175 |
+-----------+------------+-------------------------------------------+
确认密码
(product)root@localhost [mysql]> select password('abcd123');
+-------------------------------------------+
| password('abcd123') |
+-------------------------------------------+
| *CCB4F88E945E0E14F9BEB093EB797BB0BDBFA175 |
+-------------------------------------------+
1 row in set (0.02 sec)
修改mysqld_multi 文件 使其可以输出调用的命令信息 在文件内添加
在 sub defaults_for_group 和 sub stop_mysqlds函数下添加
print $com."\n";
执行关闭命令 #发现调用的命令里的密码都是******
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3316 --socket=/tmp/mysql3316.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3316 --socket=/tmp/mysql3316.sock shutdown >> /data/mysql/mysql3316/data/mysqld_multi.log 2>&1 &
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3317 --socket=/tmp/mysql3317.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3317 --socket=/tmp/mysql3317.sock shutdown >> /data/mysql/mysql3316/data/mysqld_multi.log 2>&1 &
检查端口是否真的关闭了
[root@ctyun ~]# netstat -lntp | grep mysql #可以看到端口依然存在
tcp 0 0 :::3316 :::* LISTEN 4851/mysqld
tcp 0 0 :::3317 :::* LISTEN 4850/mysqld
测试下 调用的命令是否正确 先关闭3316端口
[root@ctyun ~]# /usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3316 --socket=/tmp/mysql3316.sock shutdown
Warning: Using a password on the command line interface can be insecure.
[root@ctyun ~]# !net #可以看到使用调用的命令是可以进行mysql关闭操作的
netstat -lntp | grep mysql
tcp 0 0 :::3317 :::* LISTEN 4850/mysqld
正常情况 如下
执行 关闭命令 #可以看到 密码是明文显示的
[root@ctyun ~]# /usr/local/mysql/bin/mysqld_multi stop
my_print_defaults -s mysqld_multi
my_print_defaults -s mysqld3316
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3316 --socket=/tmp/mysql3316.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3316 --socket=/tmp/mysql3316.sock shutdown >> /data/mysql/mysqld_multi.log 2>&1 &
my_print_defaults -s mysqld3317
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3317 --socket=/tmp/mysql3317.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3317 --socket=/tmp/mysql3317.sock shutdown >> /data/mysql/mysqld_multi.log 2>&1 &
How to repeat:
[root@ctyun ~]# netstat -lntp | grep mysql #确认mysql的多实例已经启动
tcp 0 0 :::3316 :::* LISTEN 11662/mysqld
tcp 0 0 :::3317 :::* LISTEN 11661/mysqld
多实例的配置信息
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user = multi_user
password = "abcd123"
log = /data/mysql/mysqld_multi.log
[mysqld3316]
port = 3316
innodb_data_home_dir = /data/mysql/mysql3316/data
datadir = /data/mysql/mysql3316/data
innodb_log_group_home_dir = /data/mysql/mysql3316/logs
tmpdir = /data/mysql/mysql3316/tmp
socket = /tmp/mysql3316.sock
log-bin = /data/mysql/mysql3316/logs/mysql-bin
innodb_buffer_pool_size = 100M
[mysqld3317]
port = 3317
innodb_data_home_dir = /data/mysql/mysql3317/data
datadir = /data/mysql/mysql3317/data
innodb_log_group_home_dir = /data/mysql/mysql3317/logs
tmpdir = /data/mysql/mysql3317/tmp
socket = /tmp/mysql3317.sock
log-bin = /data/mysql/mysql3317/logs/mysql-bin
确认 mysql用户的账号密码
(product)root@localhost [mysql]> select host,user,password from user;
+-----------+------------+-------------------------------------------+
| host | user | password |
+-----------+------------+-------------------------------------------+
| localhost | root | |
| localhost | multi_user | *CCB4F88E945E0E14F9BEB093EB797BB0BDBFA175 |
+-----------+------------+-------------------------------------------+
确认密码
(product)root@localhost [mysql]> select password('abcd123');
+-------------------------------------------+
| password('abcd123') |
+-------------------------------------------+
| *CCB4F88E945E0E14F9BEB093EB797BB0BDBFA175 |
+-------------------------------------------+
1 row in set (0.02 sec)
修改mysqld_multi 文件 使其可以输出调用的命令信息 在文件内添加
在 sub defaults_for_group 和 sub stop_mysqlds函数下添加
print $com."\n";
执行关闭命令 #发现调用的命令里的密码都是******
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3316 --socket=/tmp/mysql3316.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3316 --socket=/tmp/mysql3316.sock shutdown >> /data/mysql/mysql3316/data/mysqld_multi.log 2>&1 &
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3317 --socket=/tmp/mysql3317.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'*****' --port=3317 --socket=/tmp/mysql3317.sock shutdown >> /data/mysql/mysql3316/data/mysqld_multi.log 2>&1 &
检查端口是否真的关闭了
[root@ctyun ~]# netstat -lntp | grep mysql #可以看到端口依然存在
tcp 0 0 :::3316 :::* LISTEN 4851/mysqld
tcp 0 0 :::3317 :::* LISTEN 4850/mysqld
测试下 调用的命令是否正确 先关闭3316端口
[root@ctyun ~]# /usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3316 --socket=/tmp/mysql3316.sock shutdown
Warning: Using a password on the command line interface can be insecure.
[root@ctyun ~]# !net #可以看到使用调用的命令是可以进行mysql关闭操作的
netstat -lntp | grep mysql
tcp 0 0 :::3317 :::* LISTEN 4850/mysqld
正常情况 如下
执行 关闭命令 #可以看到 密码是明文显示的
[root@ctyun ~]# /usr/local/mysql/bin/mysqld_multi stop
my_print_defaults -s mysqld_multi
my_print_defaults -s mysqld3316
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3316 --socket=/tmp/mysql3316.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3316 --socket=/tmp/mysql3316.sock shutdown >> /data/mysql/mysqld_multi.log 2>&1 &
my_print_defaults -s mysqld3317
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3317 --socket=/tmp/mysql3317.sock
/usr/local/mysql/bin/mysqladmin -u multi_user -p'abcd123' --port=3317 --socket=/tmp/mysql3317.sock shutdown >> /data/mysql/mysqld_multi.log 2>&1 &
Suggested fix:
修改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;