ubuntu 修改mysql中root用户密码
这段时间整理我的测试库,然后才发现我居然把root密码忘记了,尝试了N多次后还是没能成功,没办法只能另辟蹊径找别的方法了。
在安全模式下登陆mysql,修改root密码
- 将mysql服务关闭
$ sudo /etc/init.d/mysql stop
[sudo] password for haha:
[ ok ] Stopping mysql (via systemctl): mysql.service.
这儿就将mysql服务停止了。
- 启用安全模式
$ sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking &
到这一步可能会报错,错误为 mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists.
不要方,尝试输入以下命令即可
$ sudo mkdir -p /var/run/mysqld
$ sudo chown mysql:mysql /var/run/mysqld
再次输入,进入安全模式
$ sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking &
到这儿终端会打印一句 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql,这样就没问题了,然后尝试无密码登陆mysql
- 无密码登陆mysql
$ mysql -uroot
进入mysql命令页
- 修改root密码
> use mysql;
> update user set authentication_string=PASSWORD("这里输入你要改的密码") where User='root';
> update user set plugin="mysql_native_password";
> flush privileges;
> quit;
- 退出安全模式
$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
有时候这样可能不能完全退出,这就需要强制杀死进程了
$ ps -ef | grep mysqld
root 874 31412 0 10:19 pts/0 00:00:00 sudo /usr/bin/mysqld_safe --skip-grant-tables --skip- networking
root 875 874 0 10:19 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
mysql 1270 875 0 10:19 pts/0 00:00:00 /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 --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
$ sudo kill -9 874
$ sudo kill -9 875
$ sudo kill -9 1270
- 重启mysql服务
$ sudo /etc/init.d/mysql start # reset mysql
- 使用root用户登陆
$ mysql -uroot -p
这样就OK啦!!!