MySQL 在Linux下的远程连接
一. 基本设置
- 通过下面命令,可以查看当前系统中的host和user:SELECT host,user FROM mysql.user;
- host要有远程登陆的客户端的IP,或者%表示所有IP。而user则是对应该IP能用的用户。
- grant all privileges on *.* to 'root'@'%' identified by 'password';
flush privileges; - 通过上述命令完成:
①第一个*表示允许访问的数据库名称,第二个*表示允许访问的表名称。如果都*,表示所有。
②root代表远程登录使用的用户名,可以自定义
③%代表允许任意ip登录,如果你想指定特定的IP,可以把%替换掉就可以了
④password代表远程登录时使用的密码,可以自定义
⑤flush privileges; 这是让权限立即生效 - service mysql restart
二. 可能遇到的问题
- 可能会遇到 ERROR 2003,大多数情况下是服务器设置问题。
- 如果ping 192.168.1.130 服务器IP可以ping通。但通过telnet 192.168.1.130 3306 失败,说明是服务器设置问题。
1. 可访问的IP地址被绑定了
- 输入命令:netstat -apn | grep 3306
如果看到:127.0.0.1:3306 则是这种情况 - 在配置文件中的[mysqld]字段下,看是否有 :bind-address = 127.0.0.1。如果有则说明被绑定到本地地址,仅对本地IP监听3306端口,自然远程的就无法连接上。
- 这时候可以改成:bind-address = 0.0.0.0 。即对所有IP地址监听。
2. 可能防火墙阻止了3306端口
如果上面设置成功还是不行,再考虑防火墙的问题,修改下防火墙规则,允许3306端口的访问。
三. 远程连接
- mysql -h 服务器ip地址 -P 3306 -u root -p