当我使用代码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根帐户,则还应该执行以下操作:
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
现在需要quit
从mysql停止/启动
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
现在再次使用mysql -u root -p并使用新密码来获取
mysql>