当我使用代码mysqld_safe --skip-grant-tables & 但我得到错误:
用于 UNIX 套接字文件的 mysqld_safe 目录“/var/run/mysqld”不存在。
$ systemctl stop mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &
我解决了:
$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld
现在我使用相同的代码mysqld_safe --skip-grant-tables & 并得到
mysqld_safe 使用 /var/lib/mysql 中的数据库启动 mysqld 守护进程
如果我使用$ mysql -u root,我会得到:
服务器版本:5.7.18-0ubuntu0.16.04.1 (Ubuntu)
版权所有 (c) 2000, 2017,Oracle 和/或其附属公司。保留所有权利。
Oracle 是 Oracle Corporation 和/或其
附属公司。其他名称可能是其各自的商标
所有者。
键入“帮助;”或 '\h' 寻求帮助。输入 '\c' 清除当前输入语句。
mysql>
现在是时候更改密码了:
mysql> use mysql
mysql> describe user;
读取表信息完成表名和列名
您可以使用 -A 关闭此功能以加快启动速度
数据库已更改
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');
或者如果你有一个可以从任何地方连接的 mysql root 帐户,你也应该这样做:
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
替代方法:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = 'root';
如果您有一个可以从任何地方访问的 root 帐户:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';`enter code here
现在需要从 mysql 中 quit 并停止/启动
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
现在再次`mysql -u root -p'并使用新密码获取
mysql>