Ubuntu16.04mysqlのインストール後エラーが起きたのでメモ
やり方
mysqlのプロセスを停止
bash
sudo systemctl stop mysql
他のサイトとかでも解決しなかった人は、別のプロセスが起動していると思うので、強制終了
bash
sudo ps aux|grep mysql
> root 5321 0.0 0.1 4508 1640 ? S Apr23 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables
> mysql 5681 0.0 17.9 1151340 180240 ? Sl Apr23 0:09 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
> xxxx 8669 0.0 0.0 14224 984 pts/0 S+ 01:51 0:00 grep --color=auto mysql
上で出てきたPIDをkill
bash
sudo kill 5321
sudo kill 5681
sudo kill 8669
mysqlをセーフモードで起動
bash
mysqld_safe --skip-grant-tables &
もし失敗したら
- 起動していたプロセスをkill
- 以下を実行して、もう一回
bash
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql
bash
sudo ps aux|grep mysql
sudo kill xxxx #出力された PIDをxxxxに入力
sudo kill yyyy #出力された PIDをyyyyに入力
#全部入力
パスワードなしでログインできる形でmysqlを起動
bash
mysqld_safe --skip-grant-tables &
mysqlを操作
mysql -u root
mysqlを操作
bash
use mysql;
select * from user;
truncate table user;
flush privileges;
grant all privileges on *.* to root@localhost identified by 'パスワード!!適宜変えて' with grant option;
flush privileges;
select * from user;
exit
mysql(サーバー側)を終了
bash
sudo ps aux|grep mysql
sudo kill xxxx
#出力された PIDをxxxxに入力
#全部入力
普通のmysqlを起動
bash
sudo systemctl start mysql