隔着屏幕轻易产生感情的你,肯定很孤独吧。

公司有次配置新服务器,用的是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作为密码

分类: MySQL

0 条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据