1) 服务停止
sudo /etc/init.d/mysqld stop
2) 以安全模式启动
sudo mysqld_safe --skip-grant-tables &
3) 用户已创建
mysql -u root
4)设置密码
UPDATE user SET Password=PASSWORD('my_password') where USER='root';
退出mysql控制台, 并重新启动服务并尝试访问 mysql 控制台
mysql -u root -p my_password
[vikram@VoltyLinux ~]$ mysql -u root -p
Enter password: *******
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
最佳答案
按照步骤2的方法进入,即以安全模式重新启动mysql守护进程。
发出命令
select user,host,password from mysql.user where user='root';
将输出剪切并粘贴到文本编辑器中,以便在以下内容之前和之后进行比较(哈希密码列值)。
对于每一行,请注意host
列。在下面的示例中,我假设有两行。一行将 %
作为主机,下一行将 localhost
对于具有 host
变体的每一行,您将发出一个命令。因此,在上面的示例中,我总共会发出 2 个命令,例如:
SET PASSWORD FOR 'root'@'%' = PASSWORD('MyNewPassword');
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
运行
select user,host,password from mysql.user where user='root';
将其剪切并粘贴到文本编辑器中。请注意密码哈希值的更改。
从安全模式关闭守护进程,然后正常重新启动。
尝试使用 MyNewPassword 以 root 身份登录
这里有一些链接。 SET PASSWORD Syntax 的那个,通常下一步是 GRANT Syntax .
对于这个问题的狭窄范围,即登录,不需要授予。但是,如果没有对数据库进行适当的授权,人们就会被沙箱化,除了像 select now();
我并不是建议您的 root 用户在更改密码后就没有权限。普通用户需要确认赠款。
关于mysql - 即使在linux终端中通过安全模式设置密码后也无法访问MySql root用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33478300/