MySQLのパスワード再設定
パスワードなんていちいち覚えていられるかや。
/etc/apache2$ mysql -u root -p Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
アカンで。アクセスできひん。
というわけでrootのパスワードを再設定するのである。
ハードウェア
- CPU Intel Core i7 8700K BOX
- MEM DDR4-2666 DIMM 16GB x 2
- M/B GIGABYTE Z370 HD3
- SSD Intel SSD 545s 512GB SSDSC2KW512G8X1
- HDD SEAGATE ST4000DM004 4TB
- G/B 玄人志向 GF-GTX1080Ti-E11GB/OC/DF
ソフトウェア
- OS Ubuntu 18.04.1 LTS
- PHP PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS )
- MYSQL Server version: 5.7.24-0ubuntu0.18.04.1 (Ubuntu)
- NVIDIAドライバ NVIDIA-SMI 390.87 Driver Version: 390.87
- CUDA Toolkit 10.0
- cuDNN v7.3.1 (Sept 28, 2018), for CUDA 10.0
- OpenBLAS
- libopenblas-base/bionic 0.2.20+ds-4 amd64
- libopenblas-dev/bionic 0.2.20+ds-4 amd64
- python-numpy (1:1.13.3-2ubuntu1)
- python-scipy (0.19.1-2ubuntu1)
- python-matplotlib (2.1.1-2ubuntu3)
- python-yaml (3.12-1build2)
- HDF5
- python-h5py (2.7.1-2)
- libhdf5-serial-dev (1.10.0-patch1+docs-4)
- graphviz (2.40.1-2)
- python-pip
- python-dev
- pydot-ng-2.0.0
- Bazel
- openjdk-8-jre:amd64 (8u181-b13-0ubuntu0.18.04.1)
- bazel (0.18.0)
- Python 2.7.15rc1
- pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
- virtualenv 15.1.0
- GNOME 3.28.2
ネットの噂を利用して
いろいろ調べて、やってみる。
要はMySQLを止めて、セーフモードで立ち上げ、パスワードを再設定しなさい。
/etc/ssl$ sudo mysqld_safe --skip-grant-tables & [1] 2539 /etc/ssl$ 2018-12-09T02:50:00.623374Z mysqld_safe Logging to syslog. 2018-12-09T02:50:00.633111Z mysqld_safe Logging to '/var/log/mysql/error.log'. 2018-12-09T02:50:00.640928Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
/var/run/mysqld ディレクトリがないと嘆いている。
じゃあ作ってあげよう
/var/run$ sudo mkdir mysqld
そして
/var/run$ sudo mysqld_safe --skip-grant-tables & [1] 4738 /var/run$ 2018-12-09T02:54:59.931578Z mysqld_safe Logging to syslog. 2018-12-09T02:54:59.941322Z mysqld_safe Logging to '/var/log/mysql/error.log'. 2018-12-09T02:55:00.047035Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 2018-12-09T02:55:02.506878Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
なんやねん。勝手に終わってやがりますよ。
MySQL 5.7系
から上記の方法はうまく行かないのかも。
/etc/mysql/ 配下にあるcnfファイルの設定を変更し、[mysqld]にskip-grant-tablesを追記する。
[mysqld]
skip-grant-tables
そしておもむろに、
/var/run$ /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.
/var/run$ mysql -u root
うまくパスワードなしてログインすることに成功。
mysql> use mysql; mysql> UPDATE user SET authentication_string=password('xxxx') WHERE user='root'; mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye /var/run$ /etc/init.d/mysql restart [ ok ] Restarting mysql (via systemctl): mysql.service. /var/run$ mysql -u root -p Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
駄目やないか、、、あ、よく考えたら sudo する必要がありました、、、