今天重置 mysql 密码时,遇到两个坑,所以记录下来以后复习。
用 mysql --version 查看当前 sql 版本
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
关闭 mysql
service mysql stop
跳过安全检查
/usr/bin/mysqld_safe --skip-grant-tables &
更改密码
这时候新开一个终端依次执行下列命令
mysql -u root
use mysql;
update mysql.user set authentication_string=password('newpassword') where user='root';
刷新权限
flush privileges;
退出 mysql
quit
重启 mysql
service mysql start
问 题
-
在跳过安全检查是遇到 mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
解决办法:依次输入以下命令,创建必要文件
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
/usr/bin/mysqld_safe --skip-grant-tables &
-
使用update user set password=password("newpassword") where user="root";更新密码的时候遇到 Unknown column 'password' in 'field list' ,原因 5.7 版本下的 mysql 数据库下已经没有 password 这个字段了
解决办法:用authentication_string代替password
update mysql.user set authentication_string=password('newpassword') where user='root';