MySQL开启远程连接详细配置
在服务器上新安装MySQL数据库,并使得改数据库可以远程访问,是部署阶段经常遇到的情况。本文将系统地介绍开放远程连接所需要的条件,同时也是发生访问失败时的检查步骤。
1.安全组和防火墙。安全组配置中要开启3306端口,如果开启了防火墙也要检查是否限制3306端口。
netstat -tulpen|grep 3306
或者
sudo lsof -i:3306
当然3306只是MySQL的默认端口,也有MySQL在使用其他端口,必要时可以查看一下MySQL使用的端口号,可以在登入MySQL后进行查询:
mysql> show global variables like 'port'; # 查看MySQL运行的实际端口 +---------------+------- | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ 1 row in set (0.01 sec)
如果开启了防火墙,将MySQL加入允许规则。
防火墙的常用操作如下:
# RH/CentOS检测防火墙状态 firewall-cmd --state # RH/CentOS查看已开放端口 firewall-cmd --list-ports
防火墙中加入允许MySQL访问的规则:
# RH/CentOS: sudo firewall-cmd --zone=public --permanent --add-service=mysql
2.MySQL的User表修改。默认配置的MySQL的User表信息如下:
mysql> select host,user from user; +-----------+---------------+ | host | user | +-----------+---------------+ | localhost | admin | | localhost | root | | localhost | mysql.session | | localhost | mysql.sys | +-----------+---------------+
host字段限定了登录用户的ip地址,默认为localhost,即只能在本机上访问MySQL。将localhost修改为%,即可允许任何ip地址的用户访问。
mysql>update user set host = '%' where user = 'root'; mysql>FLUSH RIVILEGES;
3.MySQL的配置文件修改。
打开MySQL安装目录下的配置文件my.cnf(一般MySQL安装在/etc/mysql/下),修改的对应配置信息如下:
bind-address = 0.0.0.0 # 表示允许任何主机登陆MySQL port=3306 # 表示MySQL运行端口为3306
4.重启MySQL
使用service重启(当然使用mysqld重启MySQL也是一样)
service mysqld restart
👍