我无法打开我的MYSQL服务器到所有远程连接。我跟随了很多在线指南,看起来有些不对劲。也许SO可以提供指导?我的服务器详细信息如下:
/etc/mysql/my.cnf:其他的东西,但重要的是绑定地址......
bind-address = 0.0.0.0
my.conf具有以下权限:
-rw-r--r-- 1 root root 3516 Jan 31 17:12 my.cnf
服务器未被阻止,因为:
telnet myDomain.com 3306
提示输入我的原生mysql密码。
MYSQL查询
通过'myPASSWORD'创建用户'myUser'@'%';
GRANT INSERT ON db.table_v 到'myUser'@'%' 由'myPASSWORD'标识;
FLUSH PRIVILEGES;
来自 show grants for 'myUser'@'%';
的权限
在上授予使用权。以''''''''''''''''''''''''''''''''''''''''''''''
授予
db
table_v
来{'1'}'''''''''%'
我还重启了我的服务器
问题:
mysql -h myDomain.com -u myUser -p
输入密码:
ERROR 1045(28000):用户“myDomain”的访问被拒绝@“*** MYIPADDRESS ***”(使用密码:是)
我也无法在本地登录主机不是特定本地的任何用户,例如'%'或我的家庭IP。
答案 0 :(得分:1)
如果不是拼写错误,这很有趣:
Access denied for user 'myDomain'
您是否尝试将您的域名用作用户名?应该有myUser而不是myDomain,因为你只为myUser提供远程权限。
也在:
mysql -h myDomain.com -u myUser -p
-h表示mysql服务器所在的主机,而不是用户当前的主机。所以当你在本地尝试连接数据库时,尝试“localhost”以外的其他任何东西肯定会出错,因为你试图连接一个你不想要的数据库。假设您在本地连接到mysql服务器并输入上面的行;此命令将尝试将myDomain.com上的服务器与您提供的用户myUser和密码连接。如果您定义的权限是您运行此命令的位置,那么您将获得访问被拒绝错误,因为您正在连接到其他服务器。
答案 1 :(得分:1)
我认为问题是指定bind-address属性的.cnf文件的位置。 大多数指南和教程都说这个文件是/etc/mysql/my.cnf,但经过多次尝试后我意识到正确的位置是在mysqld profile下的mysqld.cnf文件中。
尝试在那里包含bind-address属性。 要检查这是否适用于您输入" netstat -lt"并查找mysql进程的本地地址是否为0.0.0.0:3306。
然后再次检查连接
答案 2 :(得分:0)
您还需要创建本地用户帐户
CREATE USER 'myUser'@'localhost' IDENTIFIED BY 'myPASSWORD';
我不建议使用诸如
之类的不安全声明GRANT ALL ON *.* TO 'myuser'@'%';
它会创建超级用户,例如为所有操作授予所有数据库的权限。
答案 3 :(得分:0)
请问您为什么需要直接访问MySQL? MySQL应该只听本地主机,但你可以使用SSH轻松访问。
如果使用Windows,Putty允许您建立与主机的SSH连接,然后将3306 localhost流量转发到您自己的计算机。
更好的是,像SQLyog这样的程序允许SSH隧道连接到MySQL,这是我通常连接的方式(除非服务器在VPN上)。
您是使用此服务器进行开发还是拥有公共IP地址?
答案 4 :(得分:0)
请发布
的结果nmap ***MYIPADDRESS***
和
nmap localhost
和
nmap MyDomain
如果您没有从apt安装nmap,那么我可以为您提供更多帮助。