変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

mysql

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にもどし、ネットワークへつないでください。

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



mysql

mysqlをインストする。
元ネタはココ。
(1)パッケージをインスト。

# yum -y install mysql-server

(2)WinSCPで /etc/my.cnf を修正

[mysqld]

default-character-set = utf8

[mysql]

default-character-set = utf8

(3)起動

# /etc/rc.d/init.d/mysqld start

(4)自動起動設定。

# chkconfig mysqld on

# chkconfig –list mysqld

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

(5)セキュリティを強化。

# mysql_secure_installation

Enter current password for root (enter for none):  【Enter】

OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n]  【Enter】

New password:  mysqlでのrootパスワード

Re-enter new password:  mysqlでのrootパスワード

Password updated successfully!

Reloading privilege tables..

… Success!

・・・

Remove anonymous users? [Y/n]  【Enter】

・・・

Disallow root login remotely? [Y/n]  【Enter】

・・・

Remove test database and access to it? [Y/n]  【Enter】

・・・

Reload privilege tables now? [Y/n]  【Enter】

… Success!

Cleaning up…

All done! If you’ve completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!




top