我无法从外部访问mysql。我认为这可能是mysql或防火墙问题,或者是mysql内部的某些权限。
我已经尝试了网上的步骤。我将逐步介绍我的操作过程,并作为一个教程,供其他遇到同样问题的人参考:
我正在使用:
-ubuntu server 12.04
-mysql-server5.5
-there is NO hardware firewall just software one
1- 首先,我使用以下命令安装了mysql:
sudo apt-get install mysql-server
2- 我通过以下方式修改了root密码:
sudo /etc/init.d/mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
UPDATE user SET Password=PASSWORD('MYPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit;
3- 我将所有特权授予root用户的任何ip地址:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
4- 我编辑完my.cnf文件后
sudo nano /etc/mysql/my.cnf
我已经注释了以下行:
#skip-external-locking
#bind-address = 127.0.0.1
5- 我编辑了iptables以允许MySql 3306端口:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
现在输入netstat -ant:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN
tcp 0 0 66.123.173.170:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 66.123.173.170:22 189.32.2.232:49167 ESTABLISHED
tcp 0 336 66.123.173.170:22 189.32.2.232:49654 ESTABLISHED
tcp6 0 0 :::110 :::* LISTEN
tcp6 0 0 :::143 :::* LISTEN
tcp6 0 0 :::8080 :::* LISTEN
tcp6 0 0 :::21 :::* LISTEN
tcp6 0 0 :::53 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:953 :::* LISTEN
tcp6 0 0 :::25 :::* LISTEN
tcp6 0 0 :::993 :::* LISTEN
tcp6 0 0 :::995 :::* LISTEN
tcp6 0 0 127.0.0.1:8005 :::* LISTEN
请确认3306端口已经打开!我说得对吗?
6- 我重启了MySQL:
sudo service mysql start
我输入了:
service mysql status
结果:
mysql start/running, process 20757
7- 我试图连接服务器:
mysql -h 66.123.173.170 -u root -p
我遇到了这个错误:
ERROR 2003 (HY000):无法连接到位于“66.123.173.170”的MySQL服务器(111)
当我执行以下操作时:
mysql -h 127.0.0.1 -u root -p
在打开MySQL终端后它可以工作。
8- 疑问:您是否发现此过程存在任何问题?
OBS:在第4步中,我还尝试将绑定地址设置为 bid-address = 0.0.0.0, 但它并没有解决问题。
9- 疑问:如果我使用service mysql stop
关闭MySQL,那么我可以使用mysql -h 127.0.0.1 -u root -p本地访问防火墙吗?
我这样做了,即使MySQL停止/等待(这是停止和检索MySQL状态后给出的状态),我也可以连接。