Press "Enter" to skip to content

MySQL开启远程连接详细配置

intellifrog 1

在服务器上新安装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

发表评论

电子邮件地址不会被公开。