mysqlのrootのパスワードを忘れた時

CentOS6.2へ移行しようと思ったら、mysqlのrootのパスワードを忘れていた。
rootのパスワードをかけ直してみた。
参考URL
※mysql-server.i686   5.1.52-1.el6_0.1 の場合。
(1)外部から見えなくする。
(2)mysqlデーモン停止。

# service mysqld stop

(3)GRANT無効モードでmysqldを起動。

# su mysql -c ‘/usr/libexec/mysqld –skip-grant-tables’

/etc/my.cnf に、
[mysqld]
skip-grant-tables

を追加して、普通に再起動してもいいらしい。

(4)ルートのパスワードを変える。

# mysqladmin –user=root password **********

mysqladmin:
You cannot use ‘password’ command as mysqld runs
 with grant tables disabled (was started with –skip-grant-tables).
Use: “mysqladmin flush-privileges password ‘*'” instead

で、ダメだった。
この状態でLANからphppgadminからパスワードを変更しようとしたら失敗したので、同じ方法かもしれない。
普通にデータベースに接続し、

# mysql mysql

ユーザーの設定内容を確認し、

mysql> select user,host from user;
+————-+———–+
| user        | host      |
+————-+———–+
| root        | localhost |

| 他のユーザー|
+————-+———–+

パスワードを消したいユーザーのpasswordだけnullにする。

mysql> update user set Password=null where Host=’localhost’ and User=’root’;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 1

結果を確認。

mysql> select user,host,password from user;
+————-+———–+——————————————-+
| user        | host      | password                                  |
+————-+———–+——————————————-+
| root        | localhost |  空っぽになっていればOK   |
| 他のユーザー|
+————-+———–+——————————————-+

mysql> exit
Bye

これで、

# mysqladmin –user=root password **********

できるかと思ったけど、–skip-grant-tablesで起動中は password 機能は使えないらしい。
参考どおりにはいかないらしいので、普通に再設定する。

# mysql -u root

mysql> SET PASSWORD FOR root@localhost=PASSWORD(‘**********’);
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

GRANT無効モードのsqldを停止。

# ps aux | grep mysqld
root      2432  0.0  0.3   8048  1640 pts/0    S+   11:44   0:00 su mysql -c /usr/libexec/mysqld –skip-grant-tables
mysql     **** 0.0  3.1 135468 16252 ?        Ssl  11:44   0:00 /usr/libexec/mysqld –skip-grant-tables
root      ****  0.0  0.1   5392   832 pts/1    S+   11:48   0:00 grep mysqld
# kill -TERM 2432

通常モードで再起動。

# service mysqld start

 なお posgreSqlの場合は

まず、情報漏れを防ぐため、ネットワークのLANケーブルを抜いてください。
pg_hba.confのエントリを編集し直します。

# TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD
host all all 127.0.0.1/32 password

この、passwordと書いているエントリの部分をtrustへ変更します
そしてpostgreSQLを再起動し、postgresユーザーで全部いじれるようになります。
使えるようになったらtrustとした部分をpasswordにもどし、ネットワークへつないでください。

らしいが真偽のほどは不明。




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA