こんにちは
MySQLにてrootパスワードの再設定を行うために、mysqld停止後、
セーフモードで起動をしようとしています。
最終的に起動でき、パスワード再設定もできるのですが
その際発生するエラーの意味がわからず、困っています。
最終的に行いたいことができるので結果問題ないのですが
作業内容を履歴として残し、部内に説明責任があるため、把握が必要となります・・。
■環境
CentOS release 5.3 (Final)
mysql-5.0.77-3.el5
■セーフモードでの起動 を実行
//----------------ここから--
[root@example ~]# /usr/bin/mysqld_safe --user=root --skip-grant-tables & mysql mysql
[1] 26336
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@example ~]# Starting mysqld daemon with databases from /var/lib/mysql
//---------------ここまで--
■この時点でmysqlのプロセスは起動しており、/var/lib/mysql/mysql.sockファイルも存在しています。
[root@example ~]# ps -ef |grep mys
root 26336 25938 0 19:24 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --user=root --skip-grant-tables
mysql 26373 26336 1 19:24 pts/0 00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=root --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock --skip-grant-tables
root 26391 25938 0 19:24 pts/0 00:00:00 grep mys
■2回目実行
//----------------ここから--
[root@example ~]# /usr/bin/mysqld_safe --user=root --skip-grant-tables & mysql mysql
[2] 26394
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> A mysqld process already exists
mysql>
//----------------ここまで--
1度目でエラーとなるのはなぜでしょうか・・。
また"& mysql mysql"で実行されている内容が恥ずかしながらわかっていません・・。
あわせてご教示いただけますと助かります。
>また"& mysql mysql"で実行されている内容が恥ずかしながらわかっていません・・。
この部分を理解していないことが原因です
/usr/bin/mysqld_safe --user=root --skip-grant-tables & mysql mysql
はサーバプロセス(mysqld_safe)とクライアントプロセス(mysql)を同時に起動しようとしています
よって、最初のエラーはサーバプロセスが起動しきる前に、クライアントプロセスが起動してしまい、クライアントプロセスがサーバに接続できずにエラーを吐いています
2回目は、サーバプロセスを終了せずに同じコマンドを実行したため、クライアントプロセスがサーバに接続できたためエラーとならなかったと思われます
/usr/bin/mysqld_safe --user=root --skip-grant-tables &
このコマンドでサーバが起動したことを確認した後
mysql mysql
このコマンドでクライアントを起動してください
コマンドは理解して使いましょう
お礼
回答ありがとうございました。 ご指摘いただいたとおり、意味もわからずコマンドを使うなんて もってのほかですね。まず、確認すべき点を取り違えていたようです。 アドバイスいただいた点、大変参考になりました。 起動を確認した後、クライアントの起動を行うことで エラーにならず、正常動作が確認できました。 重ねての御礼となりますが、ありがとうございました。