无法通过 SSH 访问 MySQL - 访问被拒绝错误

无法通过 SSH 访问 MySQL - 访问被拒绝错误

我一直试图通过 SSH 在 Ubuntu 服务器上设置 MySQL,但总是得到一个error: 'Access denied for user 'mark'@'localhost' (using password: YES)'

到目前为止,我已尝试将绑定地址更改为服务器 IP使用这些说明,并重新进行全新安装,但是当我尝试使用任何 mysql 命令时总是出现此错误。

我的一个朋友说他不需要任何额外的设置,所以我搞不清楚我哪里出错了。我清理了所有 mysql,然后在 sudo 下安装了 mysql-server 和 mysql-client,但我无法绕过这个错误。

我是否需要配置某些内容以允许用户连接,并且/etc/hostname设置为 localhost 是否正确?

答案1

基于 debian 的系统的一个选项是使用 debian-sys-maint 用户。登录信息位于 /etc/mysql/debian.cnf 中 - 请务必同时指定主机,即使它是 localhost。登录后,您可以设置 mark 的密码(如果用户已经存在,请先删除该用户)。

$ mysql -u debian-sys-maint -h localhost -p
mysql> CREATE USER 'mark'@'localhost' IDENTIFIED BY 'mypass';
mysql> GRANT ALL ON *.* TO 'mark'@'localhost';
mysql> GRANT GRANT OPTION ON *.* TO 'mark'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
$ shred -u ~/.mysql_history

编辑:阅读您遵循的链接说明后,不清楚 mysql 是否在 localhost 上监听,如果所有用户都是 'user'@'localhost',则这是必要的,因为 mysql 用户帐户绑定到他们从中访问 mysql 服务器的主机。如果服务器正在监听 localhost 以外的地址,即使您从本地计算机访问它,也需要使用它正在监听的地址。如果是这种情况,请将其设置为监听 127.0.0.1 或 localhost,以 root 或 debian-sys-maint 身份登录,并添加帐户'mark'@'<other ip>''root'@'<other ip>'

EDIT2:/etc/hostname应该不是而是localhost机器名称。我认为这与您的问题无关,但可能存在关联。尝试将其更改为其他名称(marksmachine例如),方法是编辑 /etc/hostname,然后$ sudo hostname -F /etc/hostname

答案2

您确定您在此数据库上创建了一个名为 mark@localhost 的用户吗?您知道 mysql 安装的 root 密码吗?您已经运行了 mysql-secure-installation 吗?

答案3

首先,你必须在 Mysql 中创建用户,然后你必须为该用户添加适当的授权,下面是你可以执行此操作的命令

 GRANT ALL ON dbname.* TO mark@localhost IDENTIFIED BY 'mypassword';

相关内容