我已经执行的操作是:
sudo /etc/init.d/mysql stop
/usr/sbin/mysqld --skip-grant-tables --skip-networking &
在此之后我得到了:
[Warning] Using unique option prefix key_buffer instead of
key_buffer_size is deprecated and will be removed in a future release.
Please use the full name instead.
150929 11:48:31[Note] /usr/sbin/mysqld (mysqld ....)starting as
process 3633 ...
并且没有进一步处理。
该怎么办?
答案1
下一步可能是:
在终端:
mysql
在 mysql shell 中:
use mysql; select user,password,host from user; update user set password=password("newpassword") where user=root; select user,password,host from user; flush tables; FLUSH PRIVILEGES; quit
在终端:
kill -15 `pgrep -f 'skip-grant-tables' service mysql start mysql -u root -p
答案2
你所做的是正确的,正如手册中解释的那样(请参阅MySQL 5.5 手册在 B.5.4.1.3 点下)。在您停止的点处,您的 MySQL 服务器在没有权限控制的情况下启动。您所要做的就是按照上述链接中的后续步骤进行操作(总结如下):
通过终端连接到您的 MySQL 服务器:
shell> mysql
重新加载授权表,以便帐户管理语句起作用:
mysql> FLUSH PRIVILEGES;
修改密码(
;
最后别忘记):mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
退出MySQL客户端,正常重启mysql服务器:
mysql> exit; shell> sudo service mysql restart
顺便说一句,最好使用来service start/stop/restart/status
管理各种服务,而不是像你那样mysqld
使用版本。/etc/init.d/
答案3
以 MySQL 服务器运行的 Unix 用户身份登录到您的系统(例如,mysql)。
如果 MySQL 服务器正在运行,请停止它。您可以使用以下命令执行此操作:
su /etc/init.d/mysql stop
创建一个文本文件,其中包含一行中的以下语句。将密码替换为您要使用的密码。
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
保存文件。此示例将文件命名为/home/me/mysql-init
。该文件包含密码,因此不要将其保存在其他用户可以读取的地方。如果您不是以 mysql(服务器运行时的用户)身份登录,请确保该文件具有允许 mysql 读取它的权限。
使用特殊选项启动 MySQL 服务器
--init-file
:shell> /usr/sbin/mysqld --init-file=/home/me/mysql-init &
服务器--init-file
在启动时执行该选项指定的文件内容,改变'root'@'localhost'
账户密码。
服务器启动成功后,删除
/home/me/mysql-init
。终止
mysqld
并启动它:su /etc/init.d/mysql start