今天重置 mysql 密碼時虎忌,遇到兩個坑共螺,所以記錄下來以后復(fù)習(xí)。
用 mysql --version 查看當(dāng)前 sql 版本
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
關(guān)閉 mysql
service mysql stop
跳過安全檢查
/usr/bin/mysqld_safe --skip-grant-tables &
更改密碼
這時候新開一個終端依次執(zhí)行下列命令
mysql -u root
use mysql;
update mysql.user set authentication_string=password('newpassword') where user='root';
刷新權(quán)限
flush privileges;
退出 mysql
quit
重啟 mysql
service mysql start
問 題
-
在跳過安全檢查是遇到 mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
解決辦法:依次輸入以下命令葛假,創(chuàng)建必要文件
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 數(shù)據(jù)庫下已經(jīng)沒有 password 這個字段了
解決辦法:用authentication_string代替password
update mysql.user set authentication_string=password('newpassword') where user='root';