web-dev-qa-db-ja.com

DebianでMySQLサービスを停止できないのはなぜですか?

/etc/apt/sources.listで「squeeze」を「unstable」に置き換えて、debiansqueezeからunstableにアップグレードしようとしました。 MySQLを停止できなかったために失敗したMySQLを除いて、アップグレードはスムーズに進みました。

/etc/init.d/mysql stopは単に失敗したことを返しますが、/etc/init.d/mysql statusでステータスを取得しようとすると、次のエラーが発生します。

me@debian:~$ Sudo /etc/init.d/mysql status
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

MySQLは正常に実行されており、phpmyadminでdebian-sys-maintの権限を確認しました。すべてを実行できますが、接続はlocalhostからのみです。

11
anon

これを試して:

  1. Sudo cat /etc/mysql/debian.cnfそして、[client]セクションと[mysql_upgrade]セクションの両方にリストされているパスワードを探します

  2. mysql -u root -p passwordは元のMySQLルートパスワードです

  3. GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '*the password obtained from step 1*';

  4. /etc/init.d/mysql restart

それが修正であり、興味があれば this がその背後にある理由です。

6
Kez

答えの更新。ステップ3では、使用する必要がありました

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'the password obtained from step 1';

「ON」以降はアスタリスクが付いています。 MySql5.1で働いた

2
Frank

MySQLリファレンスマニュアル says これを行うことができます:

  1. mysqldサーバーが実行されているUnixユーザーとしてシステムにログオンします(たとえば、mysql)。
  2. サーバーのプロセスIDを含む.pidファイルを見つけます。このファイルの正確な場所と名前は、ディストリビューション、ホスト名、および構成によって異なります。一般的な場所は、/var/lib/mysql//var/run/mysqld/、および/usr/local/mysql/data/です。通常、ファイル名の拡張子は.pidで、mysqldまたはシステムのホスト名で始まります。

次のコマンドで.pidファイルのパス名を使用して、mysqldプロセスに通常のkill(kill -9ではない)を送信することにより、MySQLサーバーを停止できます。

    kill `cat /mysql-data-directory/Host_name.pid`

この部分:cat /mysql-data-directory/Host_name.pidは、プロセスIDであるファイルの内容を返します。

1
Nabil Kadimi