远程连接 MySQL
在我们初学 MySQL 的时候,一般都是在本地安装 MySQL 数据库,并且使用命令行或者 Navicat 连接,所以往往会忽略掉如何远程连接 MySQL 这个知识点,这太过局限,然而在实际运维中,访问数据库通常是远程的方式(抛开网络安全问题),大大提高开发效率。但 MySQL 默认是不开起远程连接的,所以需要一定的配置。
tips:
1.当前教程需要读者对 MySQL 的基础有所了解。
2.本教程使用 Windows 和 Linux Ubuntu 演示,CentOS 用户在重启 MySQL 服务器会有所不同。
一、开启远程连接
查看 MySQL 是否在运行
- 请确保你的 MySQL 服务是启动状态,如果不确定是否启动,则可以尝试登录进 MySQL。
开启远程连接
- Windows 开启方式:
- 找到
my.ini
配置文件,通常在C:\ProgramData\MySQL\MySQL Server X.X\
(其中 X.X 是你所使用的 MySQL 数据库版本),在该目录下会有my.ini
配置文件。 - 打开该文件,在
[mysqld]
部分找到bind-address
,默认的值是 127.0.0.1,我们需要修改为 0.0.0.0。若在[mysqld]
部分中没有bind-address
,那就自己创建一个,创建方式为:bind-address = 0.0.0.0
,配置完后保存即可。
- 找到
- Linux 开启方式:
- 使用
cat
命令查看一下是否是我们需要修改的配置文件:sudo cat /etc/mysql/my.cnf
,接下来配置方式和 Windows 方式相同,修改/创建bind-adress
并且修改值 - 当出现
!includedir
这些内容时,那么可能是采用引用的方式配置,这时需要进入/etc/mysql/mysql.conf.d
目录下,进入mysqld.cnf
文件下去修改bind-adress
值。
- 使用
- Windows 开启方式:
二、重启 MySQL 服务
Windows 下重启
net stop mysql80 # 关闭MySQL服务 net start mysql80 # 启动MySQL服务
Linux 下重启
sudo systemclt restart mysql.service # 若是非Ubuntu系统,重启方式可能不太一样
三、创建新的 MySQL 用户
由于 MySQL 的 root 用户是比较敏感的身份,这里建立新的用户来进行远程登录。
创建新用户
CREATE USER 'your_name'@'%' IDENTIFIED BY 'your_password';
- 该命令为创建一个名为
your_name
的用户,%
为任意远程主机都可连接(如果只想让指定主机连接,那就可以设置该主机 IP 进去),your_password
为用户的密码。用户名和密码根据你的方式来。
- 该命令为创建一个名为
授予权限
GRANT ALL PRIVILEGES ON *.* TO 'your_name'@'%';
- 该命令中,
GRANT ALL PRIVILEGES
是授予your_name
这个用户的所有的权限(具体权限可根据你的方式来);ON *.*
是对所有数据库和所有的表生效;TO 'your_name'@'%'
表示将权限授予给your_name
的用户,%
表示该用户可以从任何 IP 地址连接到数据库。
- 该命令中,
重新加载授权表
FLUSH PRIVILEGES;
查看用户是否创建成功。
SELECT host,user FROM mysql.user
- 如果你创建的用户被显示出来并且 host 字段为
%
,那么你的用户就创建完成了。
- 如果你创建的用户被显示出来并且 host 字段为
四、远程连接
远程连接必须确保你能跟服务器通信,并且 3306 端口(默认端口)未被防火墙阻拦。
使用 MySQL 数据库命令连接
mysql -h <MySQL Servers IP> -u <USER> -p
使用 Navicat 连接
- 打开 Navicat,添加新的连接,选择 MySQL,连接名自定义,主机名设置为创建好的用户,端口默认是 3306,密码为你设置好的密码,点击连接即可。