考虑:

./mysqladmin -u root -p** '_redacted_'  

输出(包括输入密码):

输入密码: Mysqladmin: connect to server at 'localhost' failed错误 '用户'root'@'localhost'(使用密码:YES)拒绝访问'

我该如何解决这个问题?


当前回答

根据我的经验,如果你没有sudo,它是行不通的。所以确保你的命令是;

sudo mysql -uroot -p

其他回答

在尝试了很多之后,给出了以下答案:

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('root');

和类似的答案,我的终端仍然向我抛出以下错误:

你的SQL语法有错误;检查手册,对应于您的MariaDB服务器版本的正确语法使用近…

所以在网上研究后,这一行解决了我的问题,让我改变root用户密码:

sudo mysqladmin --user=root password "[your password]"

对于新Linux用户来说,这可能是一项艰巨的任务。让我用MySQL 8更新这个(目前可用的最新版本是8.0.12,截至2018-09-12)

Open "mysqld.cnf" configuration file at "/etc/mysql/mysql.conf.d/". Add skip-grant-tables to the next line of [mysql] text and save. Restart the MySQL service as "sudo service mysql restart". Now your MySQL is free of any authentication. Connect to the MySQL client (also known as mysql-shell) as mysql -u root -p. There is no password to be keyed in as of now. Run SQL command flush privileges; Reset the password now as ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword'; Now let's get back to the normal state; remove that line "skip-grant-tables" from "mysqld.cnf" and restart the service.

就是这样。

打开并编辑/etc/my.cnf或/etc/mysql/my.cnf,具体取决于你的发行版。 在[mysqld]下添加skip-grant-tables 重新启动MySQL 你现在应该可以使用下面的命令MySQL -u root -p登录MySQL 运行mysql> flush特权; 设置新密码ALTER USER 'root'@'localhost' IDENTIFIED by 'NewPassword' 回到/etc/my.cnf,删除/comment skip-grant-tables 重新启动MySQL 现在你可以用新密码mysql -u root -p登录了

如果你像我一样,在前面的答案中所有的信息都失败了,继续卸载你机器上的所有版本的MySQL,使用命令sudo find / name " MySQL "和rm -rf每个附加" MySQL "名称的文件或目录(你应该跳过与编程语言库相关的文件)搜索所有剩余的MySQL文件。

现在安装一个新版本的MySQL,开始享受吧。注:你将失去所有的数据,所以先权衡你的选择。

我找到的所有解决方案都比必要的要复杂得多,没有一个适合我。这是解决我问题的办法。不需要重新启动mysqld或使用特殊权限启动它。

sudo mysql

-- for MySQL
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

-- for MariaDB
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('root');

通过一个查询,我们将auth_plugin更改为mysql_native_password,并将根密码设置为root(可以在查询中随意更改)。

现在您应该可以使用root登录了。更多信息可以在MySQL文档或MariaDB文档中找到。

(使用Ctrl + D或输入Exit退出MySQL控制台。)