アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは
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"で実行されている内容が恥ずかしながらわかっていません・・。
あわせてご教示いただけますと助かります。

A 回答 (1件)

>また"& 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
このコマンドでクライアントを起動してください

コマンドは理解して使いましょう
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
ご指摘いただいたとおり、意味もわからずコマンドを使うなんて
もってのほかですね。まず、確認すべき点を取り違えていたようです。

アドバイスいただいた点、大変参考になりました。
起動を確認した後、クライアントの起動を行うことで
エラーにならず、正常動作が確認できました。
重ねての御礼となりますが、ありがとうございました。

お礼日時:2009/10/04 20:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!