スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

MySQLのパスワード忘れた→復旧

MySQLのrootと別名ユーザーのパスワードを忘れました。設定してないと思ったんだけどなぁ。

# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


忘れるよねー。なんかでDB使ってるとインスコしなおしとかもできないし困るよねー。

というわけでrootパスの復旧とユーザーパスリセット、ユーザー追加みたいなことを。
1.rootパスワード復旧
セーフモードでMySQL起動してパスワードリセットとか出来るらしい。
MySQLでrootパスワードを忘れた場合の対処方法
rootのパスワードを忘れてしまった場合の対処方法
なーんだけっこうみんなやってんじゃん(ぉ

というわけでやってみましょう。
今動いているMySQL停止、オプション指定でセーフモードでMySQL起動、rootログイン

$ sudo service mysqld stop
mysqld を停止中: [ OK ]
$ sudo mysqld_safe --skip-grant-tables &
[1] 11098
141011 22:42:10 mysqld_safe Logging to '/var/log/mysqld.log'.
141011 22:42:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


ほんとに入れたすげー。

$ sudo mysqld_safe --skip-grant-tables &


の後に出力がちょっとおかしなことになってて、

[1] 11098
$ 141011 22:42:10 mysqld_safe Logging to '/var/log/mysqld.log'.
141011 22:42:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql


とか出てて$ が出てこなかったんだけども、シカトしてmysql -u root打ったら入れました。

rootパスワード復旧。mysqlにDB変更して、次の構文でrootパスワードを再設定、FLUSH PRIVILEGESで設定したパスワードを反映。

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> update user set password=PASSWORD('ぱすわーど') where User='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 3 Changed: 0 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye


エラーが出なければ復旧完了。
セーフモードのMySQLを終了させて、普通に起動する

$ sudo service mysqld stop
141011 22:47:02 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
mysqld を停止中: [ OK ]
[1]+ 終了 sudo mysqld_safe --skip-grant-tables
$ sudo service mysqld start
mysqld を起動中: [ OK ]



2.確認&ユーザーパス
さっき設定しなおしたパスワードで、rootログインできればとりあえずおっけー。

$ sudo mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



ユーザーパスワード設定しなおしー
MySQLユーザーのパスワードを忘れてしまったとき
ん?この場合も上のrootのところをユーザー名に変えればいけるのかな?
MySQL ユーザの操作(作成、パスワード変更、削除)
SET PASSWORD FOR ユーザ名@"ホスト名"=password('変更後のパスワード');
でパスワード変更ってのもどっちも行けるのかな?
多分、上の手順はセーフモード専用でrootパス変更と同じ手順をユーザー名指定でやる方法。下はroot復旧状態で一般ユーザーの誰かを指定してパスワードを変更するっていうやり方。どちらがいいかは場合によるでしょうが、セーフモードでMySQLを起動している状態を長く続けているのもあれなので、下の方法で普通にMySQL入ってユーザー指定でやってみましょう。

mysql> set password for tmintmin@localhost=password('hoge');
Query OK, 0 rows affected (0.00 sec)


tmintminに対してパスワードhoge。
Query OKが出たらこのユーザーでのログインを試して、行ければおっけーです。

$ mysql -u tmintmin -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 265
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


いけました。おっけーですね。

3.権限とか
そもそも今回は、別ユーザー名でconcrete5を複数動かそうとしてたところへの出来事。
というわけで、このtmintminさんに新しいconcrete5用のDBへのアクセス権をもってもらいましょう。

mysql> create database tmintmincon5;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on tmintmincon5.*to 'tmintmin'@'localhost' identified by password 'hoge';
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number


おや?エラーですね。パスワードがいい加減すぎるからダメなんでしょうか?と思っていくつか変えたり長くしてもダメ。
[ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number]エラー

「IDENTIFIED BY PASSWORD」を指定した場合は、ハッシュ化済みパスワードを指定する必要があります。
(中略)パスワード設定(パスワードをハッシュ化せず)したいのであれば、下記のように IDENTIFIED BYの後の PASSWORD を省略して実行してください。


はい。構文の使い方が間違いでした。

mysql> grant all on tmintmincon5.*to 'tmin'@'localhost' identified by 'hoge';
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye


おっけー。このあとこのユーザー、concrete5のインストールに使ったけど普通にいけました。
ちなみにWP、もうひとつのConcrete5、Drupalも無事稼働中。
同じサーバーで複数サービス動かしてる時は、DB設定し直すのめんどすぎるからこーいうふうにちゃんと復旧したいよねー。

 
関連記事
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

コメントの投稿

管理者にだけ表示を許可する
ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。