![当连接到 ec2 上的 mysql 时,我应该使用什么?](https://linux22.com/image/606778/%E5%BD%93%E8%BF%9E%E6%8E%A5%E5%88%B0%20ec2%20%E4%B8%8A%E7%9A%84%20mysql%20%E6%97%B6%EF%BC%8C%E6%88%91%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我目前在连接本地 mysql 服务器时遇到问题,但我需要帮助才能从其他实例连接到 mysql。
背景:我有一个安装在单个实例上的 java 服务,以及 mysql。其他实例也会有需要连接到 mysql 的这个 java 服务。
目前我的 /etc/hostname 显示:
ip-xx-xx-xx-xxx
我应该使用什么来连接?我尝试了localhost
一下,看看它是否可以连接,但没有成功。我也尝试了本地 IP,但也没有成功。
如果我只是尝试在本地连接到 mysql,那么这是可行的:
mysql -u root -p123
但这失败了:
mysql -h localhost -u root -p123
(因此,每当我添加 -h 开关、localhost、127.0.0.1 或内部 ip 地址时,它都会失败,并出现错误:错误 1045(28000):拒绝用户“myuser”@“localhost”访问(使用密码:是)
我尝试了本地 IP,但没有用,还尝试了字符串“ip-xx.xx.xx.xxx”,也没有用。
我明显做错了,我该怎么办?
答案1
可以使用 找到监听(TCP)端口sudo netstat -tlnp
。
原因是姓名而不是IP地址EC2 提供反向 DNS 查找,您的 IP 地址将解析为该名称。MySQL 可以在身份验证中使用反向 DNS 查找,但不建议这样做,因为任何拥有 IP 地址的人都可以将反向查找设置为他们喜欢的任何内容,从而绕过源保护。
这个错误:
'root'@'ip-xx-xx-xx-xxx.ec2.internal'
看起来像一半错误信息,前半部分大概是这样的ERROR 1045 (28000): Access denied for user
,最后一部分是这样的(using password: NO)
。
错误信息告诉我们两件事:
- MySQL是跑步和是监听该 IP 地址和默认端口。
- 您使用的用户名或密码有误。也可能两者都有误。
如果您尚未登录或更改 MySQL 的密码,则默认为root
无密码用户。请关闭此-p
选项,或者当系统要求您输入密码时,直接点击Enter。