![无法通过 SSH 访问 MySQL - 访问被拒绝错误](https://linux22.com/image/609664/%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20SSH%20%E8%AE%BF%E9%97%AE%20MySQL%20-%20%E8%AE%BF%E9%97%AE%E8%A2%AB%E6%8B%92%E7%BB%9D%E9%94%99%E8%AF%AF.png)
我一直试图通过 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';