CentOS6.9下Mysql对用户授权远程访问权限
1.本地服务器登录mysql
#mysql -uroot -proot
2.授权远程登录
mysql>grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option;
mysql>flush privileges;
//其中username为远程登录的用户名,password为远程登录的用户密码
//第二行flush privileges;是刷新授权表,重新授权
//授权特定ip的话,将第一行中@后面的%改成特定可远程的ip即可
//授权特定的权限的话,将第一行中的all改成select,insert,update,delete即可,各种权限用“,”隔开即可
3.授权结束以后重启Mysql
mysql>exit;
#service mysqld restart
//mysql重启以后,用另一台电脑(服务器?)在终端输入#mysql -h ip.ip.ip.ip -P 3306 -u root -p (本次设置的username为root,如果是自己设置的话,自己把root换成自己相应的username即可)
//mysql默认端口为3306,如果不是,可以在本地服务器mysql> show global variables like 'port'; 查看本机端口
//在终端输入:#mysql -h ip.ip.ip.ip -P 3306 -u root -p,界面结果却出现异常:ERROR 2003 (HY000): Can't connect to MySQL server on 'ip.ip.ip.ip' (113)
//查看错误代码,是什么导致了这个错误:#perror 113 界面显示:OS error code 113: No route to host,没有路由,但网络正常(www.baidu.com;有人说百度50%的用处是搜索东西,另外50%是检测网络是不是连通着的),推测应该是防火墙或者代理出现问题
//查看防火墙端口服务:#service iptables status,发现结果中并没有3306端口,打开防火墙的3306端口试试:# /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
//上面的iptables指令解析:-I是insert插入规则,-p是protocol指定协议,--dport是目的端口,-j参数后续跟的动作,ACCEPT动作将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链(natostrouting)。(https://blog.csdn.net/s1070/article/details/53170790)
//再查看防火墙端口服务:#service iptables status
num target prot opt source destination
x ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
//很明显3306端口已经打开了,但是你以后还想访问怎么办,那么你就把该规则保存下来#service iptables save然后再让防火墙重新启动生效#service iptables restart
4.再用另外一台电脑访问
#mysql -h ip.ip.ip.ip -P 3306 -u root -p
//输入password,本机显示登录成功,如果不确定自己是不是登录到了自己开放访问的服务器,可以mysql>show databases; 或 mysql>select host,user,password from mysql.user;查看是不是自己的服务器上的用户数据库和用户名和密码即可确认是不是访问到了自己设定的远程服务器了