我正在像这样设置 mysqladmin 密码:
mysqladmin -u root -hec2-50-17-36-83.compute-3.amazonaws.com password my_password
返回结果:
mysqladmin: connect to server at 'ec2-50-17-36-83.compute-3.amazonaws.com' failed
error: 'Unknown MySQL server host 'ec2-50-17-36-83.compute-3.amazonaws.com' (1)'
Check that mysqld is running on ec2-50-17-36-83.compute-3.amazonaws.com and that the port is 3306.
You can check this by doing 'telnet ec2-50-17-36-83.compute-3.amazonaws.com 3306'
我如何检查 mysqld 是否正在运行,以及更好的是,我如何启动它?
谢谢!
到目前为止:
我登录到远程数据库服务器(一个 EC2 实例),并执行了以下步骤:
vi /etc/mysql/my.cnf
该选项skip-networking
和绑定地址已被注释掉。因此我取消了绑定地址的注释,并添加了我的远程服务器的 IP,然后重新启动了 mysqld。
那没用。所以我尝试了远程数据库服务器。那也没用。
在远程数据库服务器(EC2 实例)上,您可以执行的唯一 mysqld 命令是mysqld
无选项的。我只是假设当我写这篇文章时,这实际上是在适当地重置它,因为它在继续之前会挂起命令几分钟。
netstat -nl | grep :3306
在远程数据库服务器上运行此命令将返回以下内容:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
不确定这是否相关,但远程数据库服务器上不存在 /etc/init.d/mysqld。但该命令确实存在于 /usr/sbin/mysqld 中。
答案1
它已经说过:
$ telnet ec2-50-17-36-83.compute-3.amazonaws.com 3306
如果无法连接,请确保主机名可以解析为正确的 IP 地址:
$ nslookup ec2-50-17-36-83.compute-3.amazonaws.com
如果已启动,请 ssh 到您的服务器并启动它(如果尚未启动):
$ ps -ef | grep mysql
$ sudo /etc/init.d/mysqld start
更新
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
这意味着你的 MySQL 服务器只监听本地主机,禁用远程访问。如果你真的想要允许,请执行以下步骤:
- ssh 到你的服务器
- 打开
/etc/my.cnf
文件并将 更改bind-address
为你的公共 IP - 注释掉该
skip-networking
选项(#
在开头加上一个) - 重新启动mysqld:
/etc/init.d/mysqld restart
- 授予用户访问权限:
grant all privileges on foo.* to 'user'@'IP' identified by 'password';