我需要与MySQL的外部连接。使用Plesk / Ubuntu 16 / nginx。在防火墙策略中,允许来自任何IP的端口3306。
它是否会被允许进入其他地方?如果是,那么需要编辑哪个文件?
答案 0 :(得分:1)
您必须对MySQL配置进行更改,并允许用户进行远程访问。
1。打开MySQL配置文件。对于基于RHEL的发行版 - /etc/my.cnf
,基于Debian的发布 - /etc/mysql/my.cnf
。
2。将bind-address
参数更改为bind-address = 0.0.0.0
,并确保未定义skip-networking
参数。
3。重启MySQL守护进程:
# service mysql restart
或者:
# service mysqld restart
或者:
# service mariadb restart
服务名称取决于已安装的MySQL版本。如果你不确定,你可以做三件事。除非在my.cnf
中发生错误,否则不会造成任何伤害。
4。授予对远程IP地址的访问权限并登录MySQL。例如,如果您希望允许用户database
访问名为user
的数据库,密码为password
,远程IP地址为203.0.113.2
:
GRANT ALL ON database.* TO user@'203.0.113.2' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
要创建有权访问所有数据库的用户,请执行以下查询:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'203.0.113.2' IDENTIFIED BY 'password' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
FLUSH PRIVILEGES;
5。您可以使用netstat
验证MySQL服务器是否正在侦听正确的IP地址。以下是所需的输出 - 0.0.0.0
地址:
# netstat -anp | grep :3306
tcp6 0 0 0.0.0.0:3306 :::* LISTEN 2723/mysqld
答案 1 :(得分:0)
netstat结果:
netstat -anp | grep :3306
tcp6 0 0 127.0.0.1:3306 :::* LISTEN 1003/mysqld