MySQL配置远程访问(bind-address)的⼀⼤误区MySQL配置远程访问(bind-address)的⼀⼤误区
看到⽹上很多⼈说了bind-address=192.168.1.100,并且关闭skip-networking。可以实现在192.168.1.100主机上对mysql的远程访问。我想说,我试了,This is bullshit!
⼀、我本机操作,尝试了多次都是⽆法启动MySQL,报错如下:
[root@localhost ~]# service mysql restart
ERROR! MySQL server PID file could not be found!
ERROR! The server quit without updating PID file (/tmp/mysqld/mysqld.pid).
[root@localhost ~]#
如果说是得⽤设置的那个主机远程连接重启的话,那好我也尝试了,依旧报错如上。
⾸先bind-address的官⽅解释如下:mysql下载配置
--bind-address=ip_address
#Use specified network interface to connect to MySQL Server(在具有多个⽹络接⼝的计算机上,使⽤此选项选择⽤于连接 MySQL 服务器的接⼝。)
#注解:假如⼀个服务器上配置了多个⽹卡,即存在配置多个ip的情况下,可以⽤bind-address选择监听某个接⼝(ip)。只有通过被监听的接⼝,才能访问mysql。
总结⼀下,bind-address的设置有以下三种情况:
bind-address=127.0.0.1 #只允许本机访问。
bind-address=某个⽹卡的ip #例如bind-address=192.168.1.101,只能通过ip为192.168.1.101的⽹卡访问。
bind-address=0.0.0.0 #此规则是系统默认配置,监听所有⽹卡,即允许所有ip访问。
⼆、仅允许本机访问数据库
如果想设置为本机访问数据库,那么/etc/myf⾥可以这么设置:
bind-address=127.0.0.1
skip-networking=1
skip-networking的默认值是0(关闭状态)。如果想查看skip-networking的值,可以通过mysql>show variables like 'skip_networking';来查看,前提是登录连接上了mysql。
三、远程访问数据库
1、前提得在防⽕墙开启对应端⼝开放
firewall设置命令如下:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#开放端⼝
firewall-cmd --reload
#重启防⽕墙⽣效
iptables设置命令如下:
[root@v01-svn-test-server online]# iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
[root@v01-svn-test-server online]# service iptables status
2、关闭skip_networking
编辑/etc/myf:
skip-networking=0
3、设置user表中对应账户的host值
mysql>grant all privileges on *.* to root@'192.168.1.100' identified by '123456';
mysql>flush privileges;
#说明:@'192.168.1.100'只是允许这台主机进⾏访问,如果设置为'%'则是所有主机可以登录访问,设置为'localhost'则是只允许本机访问。
附加说明:在mysql的配置⽂件myf中,'-'有时候同'_'均可以⽣效。例如:“skip-networking”,在数
据表中是“skip_netwroking”,⽽在myf中使⽤减号'-'和下划线'_'都⽣效。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论