我想从我的本地机器连接到EC2上的db,我无法做到并尝试了所有内容 - 我使用此命令连接到EC2:
mysql -uUSERNAME -hEC2_IP -pPASSWORD
Run Code Online (Sandbox Code Playgroud)
生成此错误
ERROR 2003(HY000):无法连接到'IP'上的MySQL服务器(110)
我修改了my.cnf
skip networking
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
仍然无法连接到数据库
moh*_*bou 85
如上面的回复中所述,它可能与AWS安全组和其他事情有关.但是如果你创建了一个用户并给它远程访问'%'并仍然收到此错误,请检查你的mysql配置文件,在debian上,你可以在这里找到它:/etc/mysql/my.cnf并找到该行:
bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
并将其更改为:
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
并重启mysql.
在debian/ubuntu上:
/etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)
我希望这适合你.
San*_*mad 52
可能有以下原因之一:
请通过以下链接:如何启用对MySQL数据库服务器的远程访问?
Jer*_*yal 42
以下是远程访问MySQL 的完整步骤(部署在Amazon EC2上): -
转到ec2实例的安全组 - >编辑入站规则 - >添加新规则 - >选择MySQL/Aurora和来源Anywhere.
在实例控制台中:
sudo vi /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)
这将打开vi编辑器.
在my.cnf文件中,[mysqld]添加新行后写下:
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
输入:wq(输入)保存文件
现在重启MySQL:
sudo /etc/init.d/mysqld restart
Run Code Online (Sandbox Code Playgroud)
登录MySQL:
mysql -u root -p mysql (在此之后输入密码)
现在编写以下命令:
CREATE USER 'jerry'@'localhost' IDENTIFIED BY 'jerrypassword';
CREATE USER 'jerry'@'%' IDENTIFIED BY 'jerrypassword';
GRANT ALL PRIVILEGES ON *.* to jerry@localhost IDENTIFIED BY 'jerrypassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* to jerry@'%' IDENTIFIED BY 'jerrypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Run Code Online (Sandbox Code Playgroud)
在此之后,可以通过输入实例的公共dns/ip作为MySQL主机地址,用户名为jerry,密码为jerrypassword来远程访问MySQL dB.(端口默认设置为3306)
Tom*_*Mac 27
可能是您尚未将分配给EC2实例的Amazon Security Group配置为接受端口3306上的传入请求(MySQL的默认端口).
如果是这种情况,则只需按几下按钮,即可轻松打开安全组的端口:
1)登录AWS Console并转到'EC2'
2)在"网络与安全"下的左侧菜单中,转到"安全组"
3)检查有问题的安全组
4)点击"入站标签"
5)从下拉列表中选择"MYSQL"并单击"添加规则"
可能不是原因,但值得一去......
追踪此问题的一个有用步骤是确定MySQL实际设置的绑定地址.你可以用netstat做到这一点:
netstat -nat |grep :3306
Run Code Online (Sandbox Code Playgroud)
这有助于我解决我的问题,因为有多个mysql配置文件,我编辑了错误的一个.Netstat显示mysql仍在使用错误的配置:
ubuntu@myhost:~$ netstat -nat |grep :3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Run Code Online (Sandbox Code Playgroud)
所以我在配置目录中找到了可能覆盖我的设置并发现的任何其他文件:
ubuntu@myhost:~$ sudo grep -R bind /etc/mysql
/etc/mysql/mysql.conf.d/mysqld.cnf:bind-address = 127.0.0.1
/etc/mysql/mysql.cnf:bind-address = 0.0.0.0
/etc/mysql/my.cnf:bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
D'哦!这告诉我我调整的设置是错误的配置文件,所以我这次编辑了RIGHT文件,用netstat确认了它,并且正在进行业务.
小智 8
对于ubuntu的某些配置,需要在此文件中更改绑定地址:
/etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)
虽然这个问题似乎得到了解答,但您可以得到的另一个常见问题是数据库用户配置错误.这是一个mysql管理和权限问题:
10.55.142.10010.55.142.144'root'@'localhost')在本地访问'my_user'@'%' IDENTIFIED BY PASSWORD 'password' mysql -umy_user -p -h ip-10-55-142-100.ec2.internal主机对显式IP,公共DNS等的引用也是如此.步骤6失败,因为mysql DB具有错误的用户权限.它需要这个:
GRANT ALL PRIVILEGES ON *.* TO 'my_user'@'ip-10-55-142-144.ec2.internal' IDENTIFIED BY PASSWORD 'password'
Run Code Online (Sandbox Code Playgroud)
我想这%适用于任何远程服务器,但我没有发现这种情况.
如果这有助于您,请告诉我.
| 归档时间: |
|
| 查看次数: |
127829 次 |
| 最近记录: |