5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQL 5.6でmysqld_multi stopが動かない

Posted at

ubuntuのmysql-community-server 5.6.26のmysqld_multi stopがなんか動かない。

SHUTDOWN権限つけたユーザを作って、

> CREATE USER 'XXXXX'@'localhost' IDENTIFIED BY 'YYYYY';
> GRANT SHUTDOWN ON *.* TO 'XXXXX'@'localhost';

my.cnfにuserとpasswordを記載する。

[mysqld_multi]
user = XXXXX
password = YYYYY

でmysqld_multi stopを実行してみるんだが、

# mysqld_multi stop

停止されない。

ログを見てみると、

# cat /usr/share/mysql/mysqld_multi.log

Stopping MySQL servers

Warning: Using a password on the command line interface can be insecure.
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'XXXXX'@'localhost' (using password: YES)'
mysqld_multi log file version 2.16; run: Mon Aug  3 10:36:34 2015

権限エラーになっている。

/usr/bin/mysqld_multiの中身を見てみるとmysql_admin shutdownで停止しているようなので、実行しているコマンドを出力してみると、

    $com= get_mysqladmin_options($i, @groups);
    $com.= " shutdown";
    $com.= " >> $opt_log 2>&1" if (!$opt_no_log);
    $com.= " &";
    print "$com\n"; ##追記
    system($com);
# mysqld_multi stop                                                                                                                             
/usr/bin/mysqladmin -u XXXXX -p'*****' --port=3306 --socket=/xxx/mysql/mysqld.sock shutdown >> /usr/share/mysql/mysqld_multi.log 2>&1 &

パスワードが*****にマスクされている・・・
内部で使ってるmy_print_defaultsのデフォルト動作っぽい。

# my_print_defaults --defaults-file=/etc/mysql/my.cnf mysqld_multi                                                                     
--user=XXXXX
--password=*****

-sつけるといけるっぽいがmysql_multiのオプションとしては指定できなそう。

# my_print_defaults --defaults-file=/etc/mysql/my.cnf mysqld_multi -s
--user=XXXXX
--password=YYYYY

このへんのコードいじればいけるんだろうけど、mysql-server-communityは頻繁にアップデートしたり複数バージョン運用したりするからあんま手パッチしたくないなぁ。

my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
my @defaults = `$com`;

というわけでいったんmy.cnfのmysqld_multiエントリは消して、mysqld_multiのオプションとして渡すことにした。

オペレーションで毎回入力はつらいのでaliasに記載。

# cat .bash_aliases 
alias mysqld_multi="mysqld_multi --user=XXXXX --password='YYYYY'"

うーん、イケてない・・・

5
5
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?