MySQLのパスワード初期化
見たサイト
- MySQL :: MySQL 5.6 リファレンスマニュアル :: B.5.4.1 root のパスワードをリセットする方法
- MySQL 5.7.6でroot用パスワードが変わらなくて困った話 - Qiita
- MySQLでrootパスワードを忘れた場合の対処方法 | 東京上野のWeb制作会社LIG
root@wakasagi:~# mysqld_safe --init-file=/root/init-mysql
2017-08-26T02:11:59.477574Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-08-26T02:11:59.492627Z mysqld_safe A mysqld process already exists
root@wakasagi:~# systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2017-08-26 10:58:46 JST; 13min ago
Process: 14792 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS)
Process: 14752 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 14798 (mysqld)
CGroup: /system.slice/mysql.service
└─14798 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
Aug 26 10:58:46 wakasagi systemd[1]: Starting MySQL Community Server...
Aug 26 10:58:46 wakasagi systemd[1]: Started MySQL Community Server.
root@wakasagi:~# systemctl stop mysql
root@wakasagi:~# mysqld_safe --init-file=/root/init-mysql
2017-08-26T02:12:19.986634Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-08-26T02:12:19.988214Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
root@wakasagi:~# ls /var/run/mysqld
ls: cannot access '/var/run/mysqld': No such file or directory
root@wakasagi:~# mkdir -p /var/run/mysqld
root@wakasagi:~# chown mysql:mysql /var/run/mysqld/
root@wakasagi:~# mysqld_safe --init-file=/root/init-mysql
2017-08-26T02:13:05.628082Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-08-26T02:13:05.641893Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2017-08-26T02:13:07.579662Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
root@wakasagi:~#
上記方法ではどうしても上手く出来ないので方法を変えてみることにした。
mysqld_safe --skip-grant-tables --skip-networking &
ログイン出来たら…
mysql> use mysql;
mysql> update user set password=password("hogehoge123") where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> update user set authentication_string=password("hogehoge123") where user='root';
mysql> flush privileges;
起動させているプロセスを終了させる
ps aux | grep mysql
ユーザmysqlで起動しているプロセス探す
root@wakasagi:~# ps aux | grep mysql
root 16504 0.0 0.1 4508 1840 ? S 12:07 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
mysql 16672 0.0 19.5 1260916 198308 ? Sl 12:07 0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock
root 16953 0.0 0.1 14224 1028 pts/1 S+ 12:48 0:00 grep --color=auto mysql
正常なプロセス終了の仕方が怪しかったので確認した。
http://kazmax.zpp.jp/linux_beginner/process_kill.html
オプションなしだとTERMだった。ダメ押しでオプション付けて終了させる。
kill -TERM 16672
プロセスが終了しているか確認
ps aux | grep mysql
新しく設定したパスワードで入れるか確かめる
mysql -u root -p
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,DROP,INDEX
-> ON wp_blog.*
-> TO wp_blog_admin@localhost
-> IDENTIFIED BY 'fugafuga456';
Query OK, 0 rows affected, 1 warning (0.01 sec)