公司有次配置新服务器,用的是oneinstack的一键包,装完之后想使用navicate链接数据库,结果发现链接不上,各种姿势报错,找了找原因顺便问了问公司大牛前辈,最后在oneinstack官方的解决方案里面找到了解决办法(结果是错的,两年前,情有可原)。在这里把我自己的解决方法记录下,以观后效。
首先官方的解释是:
可以理解嘛,也是为了我们的服务器安全考虑。
一.想要可以远程链接数据库,首先需要打开iptables3306端口
操作系统是centos系列:
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT service iptables save #保存iptables规则centos7最新版的命令方式变了,需要用以下方式开放
1.systemctl start firewalld 开启防火墙 2.firewall-cmd --zone=public --add-port=3306/tcp --permanent 命令含义: --zone #作用域 --add-port=80/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 3.firewall-cmd --reload
操作系统如果是Ubuntu/Debian系列:
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT iptables-save > /etc/iptables.up.rules #保存iptables规则
二.数据库授权
总共有两种方法,分别是改表法和授权法,这里只介绍后一种。
这个数据库授权是我自己找到的方法,官方的sql写法有误
你想user使用password从任何主机连接到mysql服务器的话。注意:分号必须有
Sql代码
mysql -uroot -p 进入数据库(刚装好这样就可以直接进去)
1. GRANT ALL PRIVILEGES ON *.* TO ‘user’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
2.FLUSH PRIVILEGES;
如果你想允许用户user从ip为192.168.1.6的主机连接到mysql服务器,并使用password作为密码
Sql代码
1. GRANT ALL PRIVILEGES ON *.* TO ‘user’@’192.168.1.3’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
2. FLUSH PRIVILEGES;
如果你想允许用户user从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用password作为密码
Sql代码
1. GRANT ALL PRIVILEGES ON dk.* TO ‘user’@’192.168.1.3’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
2. FLUSH PRIVILEGES;
注意授权后必须FLUSH PRIVILEGES;否则无法立即生效。
后来还找到一种新的方法,不过没有测试过,这里分享一下,有兴趣的可以试一下。
在安装mysql的机器上运行:
1、d:\mysql\bin\>mysql -h localhost -u root
//这样应该可以进MySQL服务器
2、mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ WITH GRANT OPTION
//赋予任何主机访问数据的权限
3、mysql>FLUSH PRIVILEGES
//修改生效
4、mysql>EXIT
//退出MySQL服务器
这样就可以在其它任何的主机上以root身份登录啦!
其它:
mysql> grant all privileges on *.* to ‘energy_pf’@’192.168.2.65’ identified by ‘energy_pf’ with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> plush privileges;
允许用户energy_pf从ip为192.168.2.65的主机连接到mysql服务器的任意数据库(*.*),并使用energy_pf作为密码
0 条评论