首页 > 代码库 > MySql Server(Debian Linux)远程访问设置

MySql Server(Debian Linux)远程访问设置

1. 登录Mysql Server:  

$mysql -u root -p

2. 检查网络,Server是否允许远程连接:  

mysql> show variables like ‘%skip_networking%‘;  此值应该为‘OFF’,一般默认值即为‘OFF‘, 表示允许TCP/IP连接
skip_networking: 只允许通过一个套接字文件(Unix/Linux系统)或通过命名管道(Windows系统)进行本地连接,不允许ICP/IP连接; 这提高了安全性,但阻断了来自网络的外部连接和所有的Java客户程序(Java客户即使在本地连接里也使用TCP/IP).在值可以在/etc/mysql/my.cnf中进行设置.

3. 绑定权限到mysql.user数据表:

mysql> use mysql;   mysql> GRANT ALL ON *.* TO user@‘%‘ IDENTIFIED BY ‘password‘ WITH GRANT OPTION;   #允许任何IP地址(‘%‘字符即表示这个意思)的PC, 用user帐户和password密码来远程访问整个MySQL Server(‘*.*‘所有的所有)  #必须加类似这样的帐户,才可以远程登陆. root帐户是无法远程登陆的,只可以本地登陆.
#绑定此server下某个特定数据库, 比如只可以远程访问itest表#mysql> GRANT ALL ON itest.* TO user@‘%‘ IDENTIFIED BY ‘password‘ WITH GRANT OPTION;

4. 修改Mysql配置文件:

$sudo vim /etc/mysql/my.cnf#注释bind-address或者改为指定IP地址

5. 保存文件,重启service

$sudo service apache2 restart#或者sudo /etc/init.d/mysql restart

6. 防火墙规则下,打开3306端口

$sudo iptables -LChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination#如果出现以上,则表示没有防火墙规则,所有端口已开放#如果存在防火墙规则$sudo vim /etc/sysconfig/iptables-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)Tips:不要把这两条规则添加到防火墙配置的最后一行,否则会导致防火墙启动失败, 可以添加到22端口下边. ##################################### Firewall configuration written by system-config-firewall... ...-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT-A INPUT -j REJECT –reject-with icmp-host-prohibited... ...####################################Tips: INPUT <--> RH-Firewall-1-INPUT 根据配置文件使用不同的链$sudo service apache2 restart#或者$sudo /etc/init.d/iptables restart 重启防火墙

MySql Server(Debian Linux)远程访问设置