远程连接Mysql Ubuntu
出于某种原因,我一直无法远程连接到我的MySQL服务器。 我已经尝试了一切,但仍然收到错误。
root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl Enter password: ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)
现在,我尝试了跑步
`GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`
而且什么也没有! 我做错了什么?
编辑:my.cnf已经注释了绑定ip。
要将MySQL暴露给本地主机以外的其他任何东西,您必须具有以下行
对于MySQL版本5.6及以下
在/etc/mysql/my.cnf
取消/etc/mysql/my.cnf
并分配给您的计算机IP地址,而不是回送
对于MySQL版本5.7及以上
在/etc/mysql/mysql.conf.d/mysqld.cnf
取消/etc/mysql/mysql.conf.d/mysqld.cnf
并分配给您的计算机的IP地址,而不是回送
#Replace xxx with your IP Address bind-address = xxx.xxx.xxx.xxx
或者,如果您不想指定IP,请添加一个bind-address = 0.0.0.0
然后停止并用新的my.cnf条目重新启动MySQL。 一旦运行到terminal并input以下命令。
lsof -i -P | grep :3306
这应该回来这样的事情与你的实际IP在xxx的
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
如果上述语句正确返回,您将可以接受远程用户。 但是,对于远程用户连接正确的priveleges,您需要在localhost和'%'中创build该用户。
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass'; CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
然后,
GRANT ALL ON *.* TO 'myuser'@'localhost'; GRANT ALL ON *.* TO 'myuser'@'%';
最后,
FLUSH PRIVILEGES; EXIT;
如果您没有创build与上述相同的用户,则在本地login时,您可能会inheritance基本本地主机权限并存在访问问题。 如果你想限制myuser的访问,那么你需要阅读GRANT语句的语法。 这里如果你通过所有这些,仍然有问题发布一些额外的错误输出和my.cnf适当的行。
注意:如果lsof没有返回或没有find,你可以在你的Linux发行版本上安装它。 你不需要使用它来工作,但当事情没有按预期工作时,它是非常方便的。
在apesa优秀的职位上添加几点:
1)你可以使用下面的命令来检查mysql服务器正在监听的ip地址
netstat -nlt | grep 3306 sample result: tcp 0 0 xxx.xxx.xxx.xxx:3306 0.0.0.0:* LISTEN
2)使用FLUSH PRIVILEGES
强制授权表,如果由于某种原因,这些更改不会立即生效
GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION; GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;
3)如果在mysql服务器上启用了netfilter防火墙( sudo ufw enable
),请执行以下操作打开远程访问端口3306:
sudo ufw allow 3306
使用检查状态
sudo ufw status
4)build立远程连接后,可以使用命令在客户机或服务器机器上进行validation
netstat -an | grep 3306 netstat -an | grep -i established
MySQL只监听本地主机,如果我们想启用远程访问,那么我们需要在my.cnf文件中做一些修改:
sudo nano /etc/mysql/my.cnf
我们需要注释掉bind-address和skip-external-locking行:
#bind-address = 127.0.0.1 # skip-external-locking
进行这些更改后,我们需要重新启动mysql服务:
sudo service mysql restart
如果在Windows上testing,不要忘记打开端口3306。