質問: mysql セーフモード起動のエラーについて こんにちは 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 このコマンドでクライアントを起動してください コマンドは理解して使いましょう