由于您的问题是远程访问 MySQL 数据库,我将发布一些相关文档,以便像 TonyMiao 这样的未来查看者将有一个途径来解决他们自己的相关问题。
步骤#1:使用 SSH 登录(如果服务器位于您的数据中心之外)
首先,通过 ssh 登录远程 MySQL 数据库服务器。您可能需要以 root 用户身份登录 MySQL 服务器:
ssh [email protected] /cdn-cgi/l/email-protection
使用 su 或 sudo 以 root 身份登录
su
或使用须藤
sudo -i
或者如果允许,直接以 root 用户身份登录:
ssh [email protected] /cdn-cgi/l/email-protection
步骤#2:编辑 my.cnf 文件
连接后,您需要使用文本编辑器(例如 vi)编辑 MySQL 服务器配置文件 my.cnf:
如果您使用的是 Debian/Ubuntu Linux 文件位于/etc/mysql/my.cnf
地点。
如果您使用的是 Red Hat Linux/Fedora/Centos Linux 文件位于/etc/my.cnf
地点。
如果您使用 FreeBSD,则需要创建一个文件/var/db/mysql/my.cnf
地点。
编辑/etc/my.cnf
, run:
# vi /etc/my.cnf
步骤#3:打开文件后,找到如下行
[mysqld]
Make sure line skip-networking is commented (or remove line) and add following line
bind-address=YOUR-SERVER-IP
For example, if your MySQL server IP is 65.55.55.2 then entire block should be look like as follows:
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/English
bind-address = 65.55.55.2
# skip-networking
....
..
....
Where,
- 绑定地址:要绑定的IP地址。
- Skip-networking :根本不监听 TCP/IP 连接。全部
与 mysqld 的交互必须通过 Unix 套接字进行。这个选项是
强烈推荐用于仅允许本地请求的系统。
由于您需要允许远程连接,因此应删除此行
来自 my.cnf 或将其置于注释状态。
步骤#4 保存并关闭文件
如果您使用的是 Debian / Ubuntu Linux,请键入以下命令重新启动 mysql 服务器:
# /etc/init.d/mysql restart
OR
# systemctl restart mysql
如果您使用的是 RHEL / CentOS / Fedora / Scientific Linux,请键入以下命令重新启动 mysql 服务器:
# /etc/init.d/mysqld restart
OR
# systemctl restart mysqld
如果您使用的是 FreeBSD,请键入以下命令来重新启动 mysql 服务器:
# /usr/local/etc/rc.d/mysql-server restart
OR
# service mysql-server restart
步骤#5 授予对远程 IP 地址的访问权限
连接mysql服务器:
$ mysql -u root -p mysql
授予对新数据库的访问权限
如果你想为用户 bar 添加一个名为 foo 的新数据库,远程 IP 为 202.54.10.20,那么你需要在 mysql> 提示符下键入以下命令:
mysql> CREATE DATABASE foo;
mysql> GRANT ALL ON foo.* TO bar@'202.54.10.20' IDENTIFIED BY 'PASSWORD';
如何授予对现有数据库的访问权限?
假设您始终从名为 202.54.10.20 的远程 IP 与用户 webadmin 的名为 webdb 的数据库建立连接,要授予对此 IP 地址的访问权限,请键入以下命令 在现有数据库的 mysql> 提示符下,输入:
mysql> update db set Host='202.54.10.20' where Db='webdb';
mysql> update user set Host='202.54.10.20' where user='webadmin';
步骤#6:注销 MySQL
键入 exit 命令注销 mysql:
mysql> exit
步骤#7:打开端口 3306
您需要使用 iptables 或 BSD pf 防火墙打开 TCP 端口 3306。
打开 LINUX IPTABLES 防火墙的 IPTABLES 规则示例
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
或者仅允许来自位于 10.5.1.3 的 Web 服务器的远程连接:
/sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp --destination-port 3306 -j ACCEPT
或者仅允许来自您的 LAN 子网 192.168.1.0/24 的远程连接:
/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT
最后保存所有规则(RHEL/CentOS特定命令):
# service iptables save
FREEBSD / OpenBSD / NETBSD PF 防火墙规则示例 ( /ETC/PF.CONF)
使用以下命令在基于 BSD 的系统上打开端口 # 3306:
pass in on $ext_if proto tcp from any to any port 3306
或者仅允许从位于 10.5.1.3 的 Web 服务器进行访问:
pass in on $ext_if proto tcp from 10.5.1.3 to any port 3306 flags S/SA synproxy state
步骤#8:测试
从远程系统或桌面键入以下命令:
$ mysql -u webadmin -h 65.55.55.2 -p
Where,
-u webadmin:webadmin是MySQL用户名
-h IP或主机名:65.55.55.2是MySQL服务器IP地址或主机名(FQDN)
-p :提示输入密码
您还可以使用 telnet 或 nc 命令连接到端口 3306 进行测试:
$ echo X | telnet -e X 65.55.55.2 3306
OR
$ nc -z -w1 65.55.55.2 3306
输出示例:
Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!
资源信息:点击这里! https://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html