我的极限,数小时的变化...
我正在尝试访问已安装的运行在EC2实例上的MySQL。经过大量搜索(这似乎最接近我的问题是从远程服务器连接到Amazon EC2上的mysql),我显然遗漏了一些愚蠢的或误解的东西。
EC2 Ubuntu,mysqld运行良好,本地Web/App服务器工作良好,所有连接。我可以从本地的mysql。我需要使用Iron.io对这个开发机器进行外部访问,它需要从外部访问数据库。
我有
我试过了
(始终在之后重新启动服务器)
什么都不起作用,测试总是
$mysql--host=54.x.x.x--port=3306--user=myuser-p输入密码:错误1045(28000):拒绝用户“myuser”@“54.x.x.x”的访问(使用密码:YES)
不过我注意到
>
netstat-a显示不同的端口和套接字监听!?
下面的netstat中的侦听端口不是3306,但我已经从外部telnet到该端口,它显示mysql正在侦听
谁能说说我错过了什么步骤吗?
db特权摘录,下面是my.cnf
# user_privileges
# e.g. SELECT * from information_schema.user_privileges;
+--------------------------------+---------------+-------------------------+--------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | q1 |
+--------------------------------+---------------+-------------------------+--------------+
| 'root'@'localhost' | def | SELECT | YES |
...
| 'myuser'@'%' | def | SELECT | NO |
| 'myuser'@'%' | def | INSERT | NO |
| 'myuser'@'%' | def | UPDATE | NO |
#
]$ netstat -a | grep 'mysql'
tcp 0 0 *:mysql *:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 61212 /var/run/mysqld/mysqld.sock
$ telnet 54.x.x.x 3306
Trying 54.x.x.x...
Connected to ec2-54-x-x-x.us-west-2.compute.amazonaws.com.
Escape character is '^]'.
[
5.5.44-0ubuntu0.14.04.1+c<>d^+W?1*!e\{wdp&hZmysql_native_password
# my.cnf
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
#skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = localhost
# donts seem to work
bind-address = 0.0.0.0
# does not work
# ec2 external ip
#bind-address = 54.x.x.x
# ec2 internal ip
#bind-address = 172.x.x.x
我在Amazon Linux上使用mysqld 5.6.37时一直遇到同样的问题,解决方案是在[mysqld]
下方但在[mysqld_safe]
上方的/etc/my.cnf
中添加bind-address=0.0.0.0
行
我找到的最好的工具是sqlyog(也许也是mysql工作台),它实际上会在连接失败时告诉您要从哪里进入。
我喜欢它的原因是它保持了严密的安全性,显示了用户“fred123@hdm38.newyork.comcastbusiness.net”的访问被拒绝。注意,那个主机名,我刚刚编出来的,但它很重要,不管你的是什么。否则就是通配符时间,我不会做的。你可以选择。
这一点很重要,因为我在mysqlcreate user
期间使用的是该主机名(hdm38.newyork.comcastbusiness.net),而不是使用通配符,如%
我让上面连接失败,但我注意到上面的主机名。你会在下面看到。
1)远程用户正在通过使用适当的用户、主机
条目创建的帐户进行连接(查看从mysql.user order by 1,2
中选择用户、主机的输出)
CREATE USER 'santa'@'hdm38.newyork.comcastbusiness.net' IDENTIFIED BY 'mypassword';
有了上面的命令,我们现在就有了一个有机会进入的新用户。什么也做不了。无法更改为DB。基本上,它们可以执行以下操作:select now();
2)您已经使用刷新特权
执行了授予
(至少是前者)
GRANT ALL PRIVILEGES ON mydb123.* TO 'santa'@'hdm38.newyork.comcastbusiness.net';
使用上述命令的用户现在可以在mydb123数据库/模式中执行任何操作。请参阅手册中上述Grant命令,以便为您创建的用户微调访问权限,使其达到最低限度。
如果您是mysql安全性的新手,在研究之前不要包含with GRANT option
。
对于第1步和第2步,有些人会说上面的主机名是“%”。这意味着圣诞老人可以从任何主机连接。这是你的选择。开始紧绷,一旦你到了某个地方并做了研究,就放松一下。
3)您修改了my.cnf并将bind-address
从127.0.0.1
或localhost
更改为0.0.0.0
如果bind-address不是0.0.0.0
,则您只是在使用ssh进行连接
4)您已经修改了my.cnf并且有一个rem d out行#skip-networking
。即使您必须创建一行只是为了rem out它,也要这样做。
3/4更改需要重新启动mysql后台进程
5)防火墙问题。因此,对于EC2,您需要您的AWS安全组
,它对实例是活动的,以包括端口3306的打开
我在A机上设置了伪分布式模式的Hadoop和Hbase,我正在B机上运行我的客户端(Java程序)(A机和B机可以互相通信)。但我这样做面临问题。 我的客户端代码如下所示: 配置config=HBaseConfiguration.create(); config.set(“HBase.ZookeePer.quorum”,zookeeperLocation);config.set(“hbase.zo
问题内容: 我正在尝试使用jstatd用jps查询远程JVM,以便最终使用VisualVM对其进行监视。 我让jstatd使用以下安全策略运行: jstatd在带有1.6.0_10版本的HotSpot vm的64位Linux机器上运行。jstatd命令是: 我正在尝试从Windows 7计算机运行jps。由于防火墙的限制,我通过SSH隧道将RMI数据通过隧道传输到我的Windows计算机,这样jp
当我试图将我的一台机器用作WinRM客户端以连接到另一台机器时,我的一台机器出现问题。场景是: Window 7上的问题机器(VM A)已经启用了WinRM(已经运行winrm快速配置,Enable-PSRemoting),然后我将远程机器(VM C)的IP添加到VM A的受信任主机中,然后运行Test-WSMan,我得到这个错误Test-WSMan: 客户端无法连接到请求中指定的目标。验证目标上
问题内容: 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以通过使用本地计算机上的curl来访问Kibana和Elastic search 我得到以下回应 var hashRoute =’/ app / kibana’; var defaultRoute =’/ app / kibana’; var hash = window.location.hash;
我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以使用 我得到以下回应 var hashRoute='/app/kibana'; var defaultRoute='/app/kibana'; var hash=window.location.hash; if(hash.length){window.location=hashRoute hash;}其他{wi
问题内容: 每当我尝试启动eclipse调试(用于服务器端代码)时,我都会收到以下错误 无法连接到远程VM。 拒绝连接。 可能是什么问题?我已经尝试了网络上的大多数解决方案,但是都没有解决我的问题。谁能帮我解决这个问题?提前谢谢.. 问题答案: 您正在使用哪个服务器? 就像已经说过的: 在调试配置中,您必须定义服务器的正确端口(GF:9009 / Tomcat:8000) 您必须将服务器的JVM属